ViewController canBecomeFirstResponder iOS 8

Posted

技术标签:

【中文标题】ViewController canBecomeFirstResponder iOS 8【英文标题】: 【发布时间】:2014-11-21 12:31:09 【问题描述】:

我有一个 VC,它有一个用于显示文本字段的 inputAccessoryView(很像消息应用程序)。当我将此视图推送到导航堆栈上时,一切正常,我的意思是 tableview 调整其 insets 以确保在该辅助视图下方没有滚动。但是,如果我从该视图中推送同一视图控制器类的另一个实例,则不会调整插图,并且表格的滚动将位于辅助视图的后面。

此问题仅在 ios 8 中出现。另一个有趣的事情是,如果您随后在附件视图中单击以打开键盘,则插入会正确调整,以便键盘可见并在隐藏时再次调整。

此外,如果您不单击文本字段来修复问题并回击之前的 VC 也已损坏。

根据上面的信息,我相当确定这是一个 iOS 8 错误。我希望有人看到了这一点并提出了半合理的解决方案。

【问题讨论】:

【参考方案1】:

令人讨厌的解决方案,但仍然是一个解决方案:

    - (void)viewDidAppear:(BOOL)animated

    [super viewDidAppear:animated];

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^
        [self.inputAccessoryView.inputAccessoryTextField becomeFirstResponder];
        [self.inputAccessoryView.inputAccessoryTextField resignFirstResponder];
    );

这允许视图重绘插图

【讨论】:

以上是关于ViewController canBecomeFirstResponder iOS 8的主要内容,如果未能解决你的问题,请参考以下文章

你如何将数据从 ViewController 传递到包含单独 ViewController 的 PageViewController,然后这些 ViewController 将使用这些数据?

需要从另一个viewController调用其他viewController中的方法

Xcode 10.1 ViewController.h 与 ViewController.swift

当 ViewController 被呈现的 ViewController 覆盖时触发事件

一个 viewController 被推入另一个 viewController 后会发生啥

Viewcontroller 失败,所以调用另一个 Viewcontroller - Objective-c