【问题标题】:Swift: UITextField is hidden by KeyboardSwift:UITextField 被键盘隐藏
【发布时间】:2015-02-06 01:33:53
【问题描述】:

我的 ViewController 上有两个 UItextField。第一个位于 ViewController 的上半部分,而第二个位于底部。

我设法让键盘在返回时隐藏起来,当我点击第二个(下方)UItextField 时,键盘会出现并覆盖它。这意味着不再可能看到您正在输入的内容。

如何在单击第二个 UItextField 时将 ViewController 向上移动,以便用户可以看到他们正在输入的内容,然后在用户按下返回时将 ViewController 向下移动?

【问题讨论】:

标签: ios uiviewcontroller uitextfield


【解决方案1】:

使用 scrollView 并在键盘显示时滚动文本字段

【讨论】:

    【解决方案2】:

    在您的孔视图(ViewController 视图)中添加滚动视图 然后添加隐藏和显示键盘的通知

    当键盘显示时,通过减去键盘隐藏来更改滚动视图的内容插入:scrollView.ContentInsets.height - keyboard.height:

       func registerForKeyboardNotifications() {
        
        //Adding notifies on keyboard appearing
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIWindow.keyboardWillShowNotification, object: nil)
        
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: UIWindow.keyboardWillHideNotification, object: nil)
    }
    
    @objc
    func keyboardWillShow(notification: NSNotification) {
        
        guard let keyboareRect =  notification.userInfo?[UIWindow.keyboardFrameBeginUserInfoKey] as? CGRect else { return }
        let keyboardSize = keyboareRect.size
        
        let insets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
        scrollView.contentInset = insets
        scrollView.scrollIndicatorInsets = insets
        
        var aRect = self.view.frame
        aRect.size.height -= keyboardSize.height
        
        guard let activeTextField = self.activeTextField else { return }
        
        if !aRect.contains(activeTextField.frame.origin) {
            scrollView.scrollRectToVisible(activeTextField.frame, animated: true)
        }
    }
    
    @objc
    func keyboardWillHide(notification: NSNotification) {
        scrollView.contentInset = UIEdgeInsets.zero
        scrollView.scrollIndicatorInsets = UIEdgeInsets.zero
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 2010-10-01
      • 2019-06-08
      • 1970-01-01
      相关资源
      最近更新 更多