iPhone 是否有同等功能NSResponder
方法-selectNextKeyView
or -nextValidKeyView
来自 Mac OS X?我知道关于-becomeFirstResponder
方法,但是当视图层次结构变得更加复杂时,找出要在哪个视图上调用该方法并不是很漂亮。
一定有某种方法可以找到这个问题,因为当我在 iPhone 模拟器中按 Tab 时,焦点确实会正确转到下一个UITextField
。这让我想知道当我按下 Tab 时到底会发生什么。有任何想法吗?
Update: 这正是我想要的,但是_nextKeyResponder
是私有 API,所以是禁忌。有没有办法在不使用私有 API 的情况下进行“假”Tab 键按下?
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
// Try to find next responder
UIView *nextResponder = (UIView *)[self.view _nextKeyResponder];
if (nextResponder) {
// Found next responder, so set it.
[nextResponder becomeFirstResponder];
[self.tableView scrollRectToVisible:[self.tableView convertRect:[nextResponder frame] fromView:nextResponder] animated:YES];
} else {
// Not found, so remove keyboard.
[textField resignFirstResponder];
}
return NO; // We do not want UITextField to insert line-breaks.
}
没有公共 iOS 等效项NSResponder
's -selectKeyView
or -nextValidKeyView
.
当第一响应者是一个实例时UITextField
,按 Tab 键实例化一个私有子类UIEvent
它被传递给-[UIApplication sendEvent:]
,这又调用-[UIView _nextKeyResponder]
.
-[UIView _nextKeyResponder]
并不像你想象的那样工作。它将关键视图链视为一个循环,因此您的else
永远不会到达块。出于同样的原因,即使有一个用于合成键盘事件的公共 API,您也可能不想使用它。
相反,您可能想要更像的东西UIWebView
's UIToolbar
基于表单的输入附件。它的按钮可以在适当的时候启用和禁用,并且它的委托处理实际的按钮按下操作。
然而,要以一般方式实现这样的委托,查看一下可能会有所帮助how -[UIView _nextKeyResponder]已实施.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)