dcl*_*901 9 objective-c first-responder uipageviewcontroller
我有一个UIPageViewController
.一个页面只有一个按钮,另一个页面有UITextField
一个按钮.当页面滚动到带有字段的视图时,我想要它becomeFirstResponder
并打开键盘.这是发生的事情:
我调用了[self.locationQuery becomeFirstResponder]
ViewController的viewDidAppear
方法.但它永远不会打开键盘.
我做同样的事情viewWillAppear
,它看似简短,但后来很快就被解雇了.
如果我在带有文本字段的页面上,并将页面拉到中途并放开(不更改页面),则self.locationQuery
获得焦点就好了.
似乎其他东西正在从字段中获取firstResponder状态,但我不知道什么是什么,以及为什么它只会在页面发生变化时发生(而不是在页面转向失败后显示).有任何想法吗?
更新
我创建了一种方法来抓取视图以查看是否有任何其他视图确实采用firstResponder(来自此问题的答案:在不使用私有API的情况下获取当前的第一响应者).结果:
当我明确地将第一响应者提供给文本字段时,该方法报告它具有第一响应者状态.
当我不这样做时,它会返回null
.
现在我更加困惑.
我真的不明白导致我的问题的本质,但我能够通过将调用包装在异步调度中来修复它viewDidAppear
:
dispatch_async(dispatch_get_main_queue(), ^{
MapManualViewController *strongSelf = weakSelf;
[strongSelf.locationQuery becomeFirstResponder];
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
802 次 |
最近记录: |