这就是问题所在:当MessageComposeViewController被解雇时,我的textView不会成为第一个响应者,键盘也不会出现。为什么?我将[textView becomeFirstResponder]代码放在viewWillAppear中。我该怎么做??
发布于 2011-11-25 22:26:48
我找到解决方案了!所以,在messageComposeViewController:didFinishWithResult委托方法中,我们调用了[self dismissModalViewControllerAnimated:YES],但这是错误的!这个方法应该收到NO,而不是YES!然后回想一下[textView becomeFirstResponder]方法!我不知道为什么,但在这种方式下,这个应用程序工作得很完美!不过,还是要感谢大家!:)
发布于 2012-08-02 14:58:51
后来我通过下面这行代码调用了becomeFirstResponder:
[self.searchBar performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.1f];这对我很管用。希望这能有所帮助。
我猜这是动画的原因。
发布于 2015-12-21 19:05:37
根据official Apple documentation的笔记:
在分配对象作为第一响应者之前,请确保您的应用程序已经建立了它的对象图。例如,通常在viewDidAppear:方法的覆盖中调用becomeFirstResponder方法。如果您尝试在viewWillAppear:中分配第一个响应者,则您的对象图尚未建立,因此becomeFirstResponder方法返回NO。
您应该在viewDidAppear:中调用[textView becomeFirstResponder],而不是viewWillAppear:。
似乎您在[self dismissModalViewControllerAnimated:NO]中找到的解决方案也使用了笔记中的相同规则。
https://stackoverflow.com/questions/8268680
复制相似问题