Joh*_*ool 10 iphone cocoa cocoa-touch objective-c
这些NSResponder方法-selectNextKeyView或-nextValidKeyViewMac OS X 是否有等效的iPhone ?我知道这个-becomeFirstResponder方法,但是当视图层次结构变得更复杂时,找出调用它的视图并不是很好.
必须有某种方式来找到这个,因为当我在iPhone模拟器中按Tab键时,焦点正确地转到下一个UITextField.这让我想知道当我按Tab键时到底发生了什么.有任何想法吗?
更新:这正是我想要的,但它_nextKeyResponder是私有API,所以禁止.有没有办法在不使用私有API的情况下进行'假'标签按键操作?
- (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.
}
Run Code Online (Sandbox Code Playgroud)
lem*_*nar 11
对于NSResponder's -selectKeyView或者没有公共iOS等价物-nextValidKeyView.
当第一个响应者是一个实例时UITextField,按下tab会实例化一个私有子类,UIEvent然后传递给-[UIApplication sendEvent:]它-[UIView _nextKeyResponder].
-[UIView _nextKeyResponder]不像你想象的那样工作.它将关键视图链视为循环,因此else永远不会到达您的块.出于同样的原因,即使有用于合成键盘事件的公共API,您也可能不想使用它.
相反,你可能想要更像UIWebView是UIToolbar基于形式的输入附件.可以在适当的时候启用和禁用其按钮,并且其委托处理实际的按钮按下操作.
为了实现在一般的方式这样一个代表,但是,它可能会有所帮助看看如何-[UIView _nextKeyResponder]实现.
| 归档时间: |
|
| 查看次数: |
2322 次 |
| 最近记录: |