【问题标题】:Dismiss keyboard when default ios mail app opens默认 ios 邮件应用打开时关闭键盘
【发布时间】:2015-10-12 04:02:47
【问题描述】:

在我的应用程序中,我显示 MFMailComposeViewController 以显示默认邮件应用程序。如何关闭控制器中打开的键盘?

【问题讨论】:

    标签: ios objective-c mfmailcomposeviewcontroller


    【解决方案1】:
    UIWindow* keyWindow = [[UIApplication sharedApplication] keyWindow];
    UIView* firstResponder = [keyWindow performSelector:@selector(firstResponder)];
    [firstResponder resignFirstResponder];
    

    我希望这会对你有所帮助.. :)

    【讨论】:

      【解决方案2】:

      不幸的是,即使我们尝试使用endEditing; 强制关闭键盘,该功能也不起作用。在我的设备上,似乎无法关闭键盘。

      下面是应该有效的答案: 显示带有完成的MFMailComposeViewController,并在MFMailComposeViewController 的视图上调用endEditing:

      MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc] init];
      [self presentViewController:mailVC animated:YES completion:^{ 
           [mailVC.view endEditing:YES];
      }];
      


      更新:

      不建议这样做,但是,这是一种可行的方法:

      目标-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];
      }];
      

      斯威夫特:

      let mailVC = MFMessageComposeViewController()
      self.presentViewController(mailVC, animated: true) { () -> Void in
             let a = UITextField()
             mailVC.view.addSubview(a)
             a.becomeFirstResponder()
             mailVC.view.endEditing(true)
      }
      

      【讨论】:

      • 该解决方案也适用于 MFMessageComposeController.. 谢谢.. 当用户点击 MFMessage/MFMail 的编辑文本字段时,请问如何防止键盘再次出现?
      【解决方案3】:

      在你的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];
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-24
        • 2014-07-31
        • 2017-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-03
        • 2016-12-28
        相关资源
        最近更新 更多