默认 ios 邮件应用程序打开时关闭键盘
Dismiss keyboard when default ios mail app opens
在我的应用程序中,我显示 MFMailComposeViewController 以显示默认邮件应用程序。如何关闭在控制器中打开的键盘?
不幸的是,即使我们尝试使用 endEditing;
强制关闭键盘,该功能似乎也不起作用。在我的设备上似乎无法关闭键盘。
下面应该是有效的答案:
显示 MFMailComposeViewController
完成并在 MFMailComposeViewController
的视图上调用 endEditing:
。
MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc] init];
[self presentViewController:mailVC animated:YES completion:^{
[mailVC.view endEditing:YES];
}];
更新:
不建议这样做,但是,这里有一个可行的 hackish 方法:
Objective-C:
MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc] init];
[self presentViewController:mailVC animated:YES completion:^{
UITextField *a = [[UITextField alloc] init];
[mailVC.view addSubview:a];
[a becomeFirstResponder];
[mailVC.view endEditing:YES];
}];
Swift:
let mailVC = MFMessageComposeViewController()
self.presentViewController(mailVC, animated: true) { () -> Void in
let a = UITextField()
mailVC.view.addSubview(a)
a.becomeFirstResponder()
mailVC.view.endEditing(true)
}
UIWindow* keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView* firstResponder = [keyWindow performSelector:@selector(firstResponder)];
[firstResponder resignFirstResponder];
希望这对您有所帮助..:)
在你的 viewcontroller.h
添加:
@property (nonatomic) UITapGestureRecognizer *tapRecognizer;
现在在 .m 文件中,将其添加到您的 ViewDidLoad 函数中:
- (void)viewDidLoad
{
[super viewDidLoad];
//Keyboard stuff
tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
tapRecognizer.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:tapRecognizer];
}*
另外,在.m文件中添加这个函数:
- (void)handleSingleTap:(UITapGestureRecognizer *) sender
{
[self.view endEditing:YES];
}
在我的应用程序中,我显示 MFMailComposeViewController 以显示默认邮件应用程序。如何关闭在控制器中打开的键盘?
不幸的是,即使我们尝试使用 endEditing;
强制关闭键盘,该功能似乎也不起作用。在我的设备上似乎无法关闭键盘。
下面应该是有效的答案:
显示 MFMailComposeViewController
完成并在 MFMailComposeViewController
的视图上调用 endEditing:
。
MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc] init];
[self presentViewController:mailVC animated:YES completion:^{
[mailVC.view endEditing:YES];
}];
更新:
不建议这样做,但是,这里有一个可行的 hackish 方法:
Objective-C:
MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc] init];
[self presentViewController:mailVC animated:YES completion:^{
UITextField *a = [[UITextField alloc] init];
[mailVC.view addSubview:a];
[a becomeFirstResponder];
[mailVC.view endEditing:YES];
}];
Swift:
let mailVC = MFMessageComposeViewController()
self.presentViewController(mailVC, animated: true) { () -> Void in
let a = UITextField()
mailVC.view.addSubview(a)
a.becomeFirstResponder()
mailVC.view.endEditing(true)
}
UIWindow* keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView* firstResponder = [keyWindow performSelector:@selector(firstResponder)];
[firstResponder resignFirstResponder];
希望这对您有所帮助..:)
在你的 viewcontroller.h
添加:
@property (nonatomic) UITapGestureRecognizer *tapRecognizer;
现在在 .m 文件中,将其添加到您的 ViewDidLoad 函数中:
- (void)viewDidLoad
{
[super viewDidLoad];
//Keyboard stuff
tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
tapRecognizer.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:tapRecognizer];
}*
另外,在.m文件中添加这个函数:
- (void)handleSingleTap:(UITapGestureRecognizer *) sender
{
[self.view endEditing:YES];
}