当 UITextField 在 modalView 中有第一响应者时,UINavigationController 堆栈错误

发布于 2024-12-09 05:20:27 字数 325 浏览 0 评论 0原文

我在 UIViewController 中有一个 UITextField ,它被推送到 UINavigationController 堆栈上。 UINavigationController 作为 modalViewController 呈现。

如果点击后退按钮时文本字段具有第一响应者状态(即键盘已打开),则视图会像应有的那样弹出,但会导致堆栈中的每个其他视图控制器出现导航栏错误:导航上的“后退”按钮导航栏的文本颜色错误且没有背景图像,标题消失,点击其他自定义导航栏按钮没有效果。

我尝试在 viewWillDisappear: 和 viewDidDisappear: 中放弃文本字段的第一响应者状态。

I have a UITextField inside a UIViewController which is pushed onto a UINavigationController stack. The UINavigationController is presented as a modalViewController.

If the text field has firstresponder status (i.e. keyboard is up) when the back button is tapped, the view pops like it should, but it causes nav bar errors for every other view controller in the stack: The "Back" buttons on the nav bar have the wrong text color and no backing image, the titles disappear, and tapping other custom nav bar buttons has no effect.

I've tried resigning the text field's firstresponder status in viewWillDisappear: and viewDidDisappear:.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

会傲 2024-12-16 05:20:27

请尝试以下操作

在 vi​​ewController 中,而不是将 modalViewController '推' 到 NavigationController 上,只需调用

[self presentModalViewController:self.myModalViewController animated:YES];

then 当您想要摆脱它时(例如在视图左上角的按钮中),请在 MyModalViewController 中执行一个名为例如的操作

- (IBAction)doneAction {
    [self dismissModalViewControllerAnimated:YES];
}

Try the following instead

In the viewController instead of 'pushing' the modalViewController onto the NavigationController just call

[self presentModalViewController:self.myModalViewController animated:YES];

Then when you want to get rid of it (e.g. in a button in the top left of the view ) have an action in MyModalViewController that is called e.g.

- (IBAction)doneAction {
    [self dismissModalViewControllerAnimated:YES];
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文