【问题标题】:Unwanted Keyboard after Back Navigation后退导航后不需要的键盘
【发布时间】:2016-02-28 20:08:38
【问题描述】:

我的应用程序中的所有UIViewControllers 都由顶级UINavigationController 管理。在当前位于我的导航堆栈顶部的UIViewController 中,我有一组UITextFields。

当我在这些文本字段之一上调用 becomeFirstResponder() 然后立即返回而不首先更改焦点时,会出现问题,例如通过点击另一个字段。导航回一个级别后,键盘出现了,我找不到阻止它出现或使其消失的方法。当我进一步推送导航堆栈的视图时,它甚至会保持不变。

  1. 这直接或间接连接到 becomeFirstResponder() 调用,因为没有那个调用, 不会出现问题。
  2. 即使我出于测试目的调用 resignFirstResponder() 紧跟在 becomeFirstResponder() 之后 导航回来后键盘仍然出现。

我尝试了其他方法,例如检测和辞职第一响应者或在viewWillDisappear() 中调用endEditing(),但没有成功。在相应的视图从堆栈中弹出后,我什至不确定这个键盘属于什么。我无法在 View Debugger 中检查键盘,因为它没有出现在那里。

为什么会出现键盘,如何防止?

【问题讨论】:

    标签: ios swift uinavigationcontroller iphone-softkeyboard


    【解决方案1】:

    事实证明,获取第一响应者的表单验证一直在回收它,直到字段内容有效。如果它在返回导航之前没有释放状态,则键盘会保持不变,并且很难将第一响应者分配给另一个控件。

    在我的情况下,解决方案是更仔细地跟踪哪个字段是第一响应者,检测后退按钮按下,在这种情况下允许无条件辞职第一响应者,然后辞去该字段的第一响应者。

    var currentTextField: UITextField?
    
    override func viewWillDisappear(animated: Bool) {
        super.viewWillDisappear(animated)
        if let currentField = self.currentTextField {
            currentField.resignFirstResponder()
        }
    }
    
    override public func willMoveToParentViewController(parent: UIViewController?) {
        if (parent == nil) {
            backButtonPushed = true
        }
        super.willMoveToParentViewController(parent)
    }
    
    func customTextFieldDidBeginEditing(textField: UITextField) {
        currentTextField = textField
    }
    
    public func textFieldShouldEndEditing(textField: UITextField) -> Bool {
    
        // ...
        // Must return true if back button is pushed.
        if backButtonPushed {
            return true
        } else {
            // ...
        }
    }
    

    【讨论】:

      【解决方案2】:

      您是否尝试在新 VC 的 viewWillAppear() 中调用 endEditing()?

      【讨论】:

      • 这不是答案……而是关于问题细节的问题。请为此使用 cmets。
      猜你喜欢
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      相关资源
      最近更新 更多