gpt4 book ai didi

iphone - 专注于 iPhone 上的下一个有效按键 View

转载 作者:太空狗 更新时间:2023-10-30 03:26:20 32 4
gpt4 key购买 nike

对于 Mac OS X 中的 NSResponder 方法 -selectNextKeyView-nextValidKeyView 是否有等效的 iPhone?我知道 -becomeFirstResponder 方法,但是当 View 层次结构变得更加复杂时,找出调用该方法的 View 并不是很好。

一定有某种方法可以找到这一点,因为当我在 iPhone 模拟器中按 Tab 键时,焦点会正确转到下一个 UITextField。这让我想知道当我按下 Tab 键时到底发生了什么。有什么想法吗?

更新:这正是我想要的,但是 _nextKeyResponder 是私有(private) API,所以不行。有什么方法可以在不使用私有(private) 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.
}

最佳答案

NSResponder-selectKeyView-nextValidKeyView 没有公开的 iOS 等效项。

当第一响应者是 UITextField 的实例时,按 Tab 键会实例化 UIEvent 的私有(private)子类,该子类将传递给 -[UIApplication sendEvent:],它又调用 -[UIView _nextKeyResponder]

-[UIView _nextKeyResponder] 并不像您想象的那样工作。它将键 View 链视为一个循环,因此永远不会到达您的 else block 。出于同样的原因,即使有用于合成键盘事件的公共(public) API,您也可能不想使用它。

相反,您可能想要更像 UIWebView 的基于 UIToolbar 的表单输入附件。它的按钮可以在适当的时候启用和禁用,它的委托(delegate)处理实际的按钮按下操作。

然而,要以一般方式实现这样的委托(delegate),查看 how -[UIView _nextKeyResponder] is implemented 可能会有所帮助.

关于iphone - 专注于 iPhone 上的下一个有效按键 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3241966/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com