对于初学者:我已经在听键盘会出现/消失/更改通知。他们没有开枪。它们都没有出现/消失/改变。
当我按下键盘并按下控制器顶部并且还有键盘向上( - ViewWillAppear中的[UITextView becomeFirstResponder])时,不会触发键盘通知。这是有道理的,因为键盘在这个动画中实际上并没有移动,但在这种情况下肯定是不可取的。
我如何检测这种情况,和/或如何在没有通知的情况下获取键盘的当前位置?全局共享监听器是一种选择,但如果可能的话,我宁愿避免使用它。
答案 0 :(得分:0)
您需要找到firstResponder,如果它是UITextField或UITextView,那么键盘已启动或移动。没有通知意味着它已经上升,因此它的旧框架(相对于窗口)仍然有效。不幸的是,没有简单的方法来找到firstReponder。我抓住了一些代码,递归地遍历当前视图的所有子视图,寻找它。
编辑:
- (UIView *)findFirstResponder
{
if (self.isFirstResponder) {
return self;
}
for (UIView *subView in self.subviews) {
UIView *firstResponder = [subView findFirstResponder];
if (firstResponder) return firstResponder;
}
return nil;
}