如何在控制器之间保持状态时检测iOS键盘?

只是为了初学者:我已经听到键盘会出现/消失/更改通知。 他们没有射击。 也没有出现/消失/改变。

当我有了键盘,并推上了一个控制器上也有键盘了( – [UITextView成为FirstFoundResponder]在viewWillAppear),没有键盘通知被激发。 这是有道理的,因为键盘实际上并没有在这个animation中移动 ,但在这种情况下肯定是不可取的。

如何检测到这种情况,以及/或者如何在没有通知被触发的情况下获得键盘的当前位置? 一个全球共享的监听器是一个选项,但是如果可能的话,我宁愿避免这种情况。

您将需要findfirstResponder,如果它的UITextField或UITextView,然后键盘启动或移动。 没有任何通知意味着它已经到了,所以它的旧框架(相对于窗口)仍然有效。 不幸的是没有简单的方法来findfirstReponder。 我抓住了一些代码recursion地走所有当前视图的子视图,寻找它。

编辑:

- (UIView *)findFirstResponder { if (self.isFirstResponder) { return self; } for (UIView *subView in self.subviews) { UIView *firstResponder = [subView findFirstResponder]; if (firstResponder) return firstResponder; } return nil; }