【问题标题】:Show MFMessageComposeViewController with hidden keyboard显示带有隐藏键盘的 MFMessageComposeViewController
【发布时间】:2016-09-14 21:58:33
【问题描述】:

在我的应用程序中,我需要显示短信历史记录。我可以显示 MFMessageComposeViewController,但那里出现了键盘,这是我现在不需要的。用户可以通过手势隐藏它,但我想以编程方式隐藏它。

我找不到这样做的方法,但我确信这是可能的,因为我在另一个应用程序中看到了它(它名为“Mobilné platby”)。

提前谢谢你!

【问题讨论】:

  • 试试[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];[yourMessageComposeViewController.view setEndEditing:TRUE]; ?
  • sendAction 没有做任何事情。第二种可能性,您可能是指 [yourMessageComposeViewController.view endEditing:TRUE]; - 这是真的,但键盘还在。

标签: ios uikeyboard mfmessagecomposeview


【解决方案1】:

viewDidloadMFMessageComposeViewController 最后添加,

 [self.view endEditing:YES];

如果还是不行,那就去viewDidAppear试试吧

更新:

正如Apple documentation 所说,

您不得修改此视图控制器呈现的视图层次结构。但是,您可以使用 UIAppearance 协议自定义界面的外观。

参考苹果文档。你也可以参考this answer

所以,我认为,MFMessageComposeViewController 的视图层次结构不允许更改。你可以改变外观

希望这会有所帮助:)

【讨论】:

  • 因为那是系统类,所以我已经创建了子类,并在 viewDidLoad 和 viewDidAppear 中都尝试了这个。两者都返回 TRUE,但遗憾的是没有效果。
  • 如果您正在展示此视图控制器,请在其完成处理程序中尝试此操作
  • 我已经尝试过这样的完成处理程序:[self presentViewController:comp animated:YES completion:^{ Boolean test = [comp.view endEditing:YES]; NSLog(@"4: %i", 测试); }];它记录“4:1”,但键盘仍然存在。
  • 我在 Apple 文档中看到了这一点,但我没有做任何破坏这一点的事情。视图层次结构对我来说很好,我只想关闭键盘(是的,用户可以用手势拍摄它——但这对我来说不是问题)。我什至不需要发送 SMS,或更改其文本。只是为了显示已经发送和接收的消息。
【解决方案2】:

如果只是调用 endEditing 不起作用。你可以试试这个技巧: 当你点击按钮打开邮件编辑器时,直接在它下面写下这一行:

[self performSelector:@selector(function) withObject:nil afterDelay:2];

你的功能将是:

- (void)function
 {
  [self.view endEditing:YES];
 }

【讨论】:

  • 在我打开作曲家的地方(它在 didSelectRowAtIndexPath 中,但不管是在这个还是在按钮点击中)和 MFMessageComposeViewController viewDidAppear 的子类中都试过这个。虽然在这两种情况下 endEditing 都返回 true,但键盘仍然存在。
猜你喜欢
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多