首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS - UITextView becomeFirstResponder

iOS - UITextView becomeFirstResponder
EN

Stack Overflow用户
提问于 2011-11-25 19:48:03
回答 6查看 9.3K关注 0票数 1

这就是问题所在:当MessageComposeViewController被解雇时,我的textView不会成为第一个响应者,键盘也不会出现。为什么?我将[textView becomeFirstResponder]代码放在viewWillAppear中。我该怎么做??

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-11-25 22:26:48

我找到解决方案了!所以,在messageComposeViewController:didFinishWithResult委托方法中,我们调用了[self dismissModalViewControllerAnimated:YES],但这是错误的!这个方法应该收到NO,而不是YES!然后回想一下[textView becomeFirstResponder]方法!我不知道为什么,但在这种方式下,这个应用程序工作得很完美!不过,还是要感谢大家!:)

票数 -1
EN

Stack Overflow用户

发布于 2012-08-02 14:58:51

后来我通过下面这行代码调用了becomeFirstResponder:

代码语言:javascript
复制
[self.searchBar performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.1f];

这对我很管用。希望这能有所帮助。

我猜这是动画的原因。

票数 5
EN

Stack Overflow用户

发布于 2015-12-21 19:05:37

根据official Apple documentation的笔记:

在分配对象作为第一响应者之前,请确保您的应用程序已经建立了它的对象图。例如,通常在viewDidAppear:方法的覆盖中调用becomeFirstResponder方法。如果您尝试在viewWillAppear:中分配第一个响应者,则您的对象图尚未建立,因此becomeFirstResponder方法返回NO。

您应该在viewDidAppear:中调用[textView becomeFirstResponder],而不是viewWillAppear:

似乎您在[self dismissModalViewControllerAnimated:NO]中找到的解决方案也使用了笔记中的相同规则。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8268680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档