gpt4 book ai didi

ios - 将 becomeFirstResponder 重定向到 subview

转载 作者:行者123 更新时间:2023-12-01 16:02:21 26 4
gpt4 key购买 nike

是否可以将 becomeFirstResponder 从自身重定向到 subview ?

这是我的场景。
我创建了一个新的 UIWindow,我们称它为 secWin,带有 UINavigationController 的对象,我们称它为 navCon,如下所示rootViewController
navCon 有一个自定义的 UIViewController,我们称它为 cusViewCon,因为 rootViewController 只包含一个 UITextField
现在,当我在主窗口中按下一个按钮时,我会调用 [secWin makeKeyAndVisible],它会成功显示新窗口。
但现在我希望 UITextFieldcusViewCon 收到 becomeFirstResponder 调用时随时显示键盘,例如iOS 在调用 [secWin makeKeyAndVisible] 时默认完成。

我试图通过简单地覆盖我的 cusViewCon 类中的 becomeFirstResponder 来完成所有这些操作,如下所示:

- (BOOL)becomeFirstResponder {
[_myTextField becomeFirstResponder];

return NO;
}

它正在工作,但我不知道这样做是否正确,因为在文档中它说:

You can override this method in your custom responders to update your object's state or perform some action such as highlighting the selection. If you override this method, you must call super at some point in your implementation.

最佳答案

当您为几乎所有 View 都可能成为第一响应者的 macOS 编写代码时,这种方法实际上更有意义。所以不要太担心文档。

你的程序是在正确的轨道上,但我会做这样的事情:

- (BOOL)becomeFirstResponder {
BOOL willBecomeFirstResponder = [super becomeFirstResponder];
if(willBecomeFirstResponder) {
return YES; // This element is taking over the first responder so do nothing
}
else {
[_myTextField becomeFirstResponder]; // This element may not become first responder at the moment so forward message to text field
return NO;
}
}

这样我们可以确保父类(super class)方法的执行仍然发生。它应该在您的情况下返回 false(如果不是,那么还请查看 canBecomeFirstResponder 方法),以便文本字段应该接收消息。如果它确实按设计成为第一响应者,那么最好不要在您的文本字段上调用它。

关于ios - 将 becomeFirstResponder 重定向到 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46931088/

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