我有一个UIPageViewController
。一个页面有一个按钮,另一页有一个UITextField
有一个按钮。当页面滚动到带有字段的视图时,我希望它becomeFirstResponder
并打开键盘。发生的情况如下:
I call [self.locationQuery becomeFirstResponder]
视图控制器的viewDidAppear
方法。但它永远不会打开键盘。
我也做同样的事情viewWillAppear
,并且它会短暂出现,但很快就会消失。
如果我在带有文本字段的页面上,并将页面拉到一半并放开(不更改页面),self.locationQuery
接收焦点很好。
似乎有其他东西正在从现场获取firstResponder 状态,但我一点也不知道是什么,以及为什么它只会在页面更改时发生(而不是在翻页失败后显示)。有任何想法吗?
Update
我创建了一种爬行视图的方法,以查看是否有任何其他视图确实采用了firstResponder(来自此问题的答案:无需使用私有 API 即可获取当前第一响应者 https://stackoverflow.com/questions/1823317/get-the-current-first-responder-without-using-a-private-api)。结果:
现在我更困惑了。
我不太明白导致问题的本质,但我能够通过将调用包装在异步调度中来修复它viewDidAppear
:
dispatch_async(dispatch_get_main_queue(), ^{
MapManualViewController *strongSelf = weakSelf;
[strongSelf.locationQuery becomeFirstResponder];
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)