Joh*_*ool 10 iphone cocoa cocoa-touch objective-c
这些NSResponder
方法-selectNextKeyView
或-nextValidKeyView
Mac 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 次 |
最近记录: |