inputAccessoryView 中的 UITextField 不会成为FirstResponder

Posted

技术标签:

【中文标题】inputAccessoryView 中的 UITextField 不会成为FirstResponder【英文标题】:UITextField in inputAccessoryView won't becomeFirstResponder 【发布时间】:2013-11-14 16:36:10 【问题描述】:

我有一个名为 songInfoView 的视图,其中包含 3 个 UITextField 和一个 UIButton。我在父视图中创建了一个临时 UITextField 以调出键盘并将 songInfoView 分配为 inputAccessoryView。这按预期工作。

然后,我尝试在 songInfoView 中设置一个文本字段作为第一响应者。光标移动到该字段,但是当我尝试键入时,什么也没有发生。我可以点击文本字段并按预期输入,但我希望它无需点击即可工作。我错过了什么吗?我这样做不正常吗?感谢您的帮助。

songInfoView = [[SongInfoViewController alloc]init];
songInfoView.delegate = self;

UITextField *tempTextField = [[UITextField alloc]initWithFrame:CGRectMake(10.0f, 10.0f, 50.0f, 30.0f)];
[self.view addSubview:tempTextField];
[tempTextField setInputAccessoryView:songInfoView.view];
[tempTextField becomeFirstResponder];
[songInfoView.titleTextField becomeFirstResponder];

【问题讨论】:

【参考方案1】:

嗯,我自己想通了。事实证明(我认为)屏幕键盘(连同它的附件视图)有它自己的窗口。所以,在 songInfoView 的 viewDidAppear 方法中,我不得不调用

[self.view.window makeKeyAndVisible];

记得在键盘消失后在用于加载键盘的视图控制器中再次调用它。希望这对其他人有所帮助。

【讨论】:

你拯救了我的一天!将 customView 放入新的UIWindow 后,我遇到了同样的问题。

以上是关于inputAccessoryView 中的 UITextField 不会成为FirstResponder的主要内容,如果未能解决你的问题,请参考以下文章

inputAccessoryView 中的 UITextField 不会成为FirstResponder

自定义 inputaccessoryView 中的 UITextView 不退出第一响应者状态

编辑 UILabel,隐藏 inputAccessoryView [swift 5]

iOS 如何使 inputaccessoryview 中的文本视图成为第一响应者?

将 inputAccessoryView - UIToolBar 上的 UITextField 中的文本镜像到 navigationController.toolbar 上 UITextField 上

试图理解 inputAccessoryView 方法