当前位置:  开发笔记 > Android > 正文

关注iPhone上的下一个有效关键视图

如何解决《关注iPhone上的下一个有效关键视图》经验,为你挑选了1个好方法。

这些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.
}

lemnar.. 11

对于NSResponder's -selectKeyView或者没有公共iOS等价物-nextValidKeyView.

当第一个响应者是一个实例时UITextField,按下tab会实例化一个私有子类,UIEvent然后传递给-[UIApplication sendEvent:]-[UIView _nextKeyResponder].

-[UIView _nextKeyResponder]不像你想象的那样工作.它将关键视图链视为循环,因此else永远不会到达您的块.出于同样的原因,即使有用于合成键盘事件的公共API,您也可能不想使用它.

相反,你可能想要更像UIWebViewUIToolbar基于形式的输入附件.可以在适当的时候启用和禁用其按钮,并且其委托处理实际的按钮按下操作.

为了实现在一般的方式这样一个代表,但是,它可能会有所帮助看看如何-[UIView _nextKeyResponder]实现.



1> lemnar..:

对于NSResponder's -selectKeyView或者没有公共iOS等价物-nextValidKeyView.

当第一个响应者是一个实例时UITextField,按下tab会实例化一个私有子类,UIEvent然后传递给-[UIApplication sendEvent:]-[UIView _nextKeyResponder].

-[UIView _nextKeyResponder]不像你想象的那样工作.它将关键视图链视为循环,因此else永远不会到达您的块.出于同样的原因,即使有用于合成键盘事件的公共API,您也可能不想使用它.

相反,你可能想要更像UIWebViewUIToolbar基于形式的输入附件.可以在适当的时候启用和禁用其按钮,并且其委托处理实际的按钮按下操作.

为了实现在一般的方式这样一个代表,但是,它可能会有所帮助看看如何-[UIView _nextKeyResponder]实现.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有