如何解决Swift 3中的键盘问题?

时间:2016-11-28 07:47:37

标签: ios xcode swift3 keyboard

问题在于,当我尝试在文本字段中写入时,键盘会覆盖它们。如何向上滚动文本字段以查看我在写什么。我在下面的代码行中启用了返回键,并在您触摸其他位置时隐藏键盘:

override func didReceiveMemoryWarning() {
  super.didReceiveMemoryWarning()
  // Dispose of any resources that can be recreated.

}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    self.view.endEditing(true)
}

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    self.view.endEditing(true)
    return false
}

3 个答案:

答案 0 :(得分:4)

  

如何向上滚动文本字段以查看我在写什么

这可以通过两种方式实现:

  1. 您可以在键盘上以编程方式管理您的框架并显示@Taichi Kato
  2. 您可以集成具有相同用途的库。一个这样的库是 IQKeyBoardManager ,其Swift变体为 IQKeyboardManagerSwift 您可以在GitHubcocoapods <找到它/ LI>

    要实现以下步骤:

    SWIFT 3

    1. 只需从Github或cocoapods安装IQKeyboardManagerSwift

    2. IQKeyboardManagerSwift

    3. 中导入Appdelegate
    4. AppDelegate didFinishLaunchingWithOptions方法中添加以下代码行。

      IQKeyboardManager.sharedManager().shouldResignOnTouchOutside = true;
      
    5. <强>目标C

      1. 通过任何介质安装IQKeyBoardManager
      2. #import "IQKeyboardManager.h"
      3. 中导入Appdelegate
      4. AppDelegate didFinishLaunchingWithOptions方法中添加以下代码行。

        IQKeyboardManager.sharedManager.shouldResignOnTouchOutside = true;
        
      5. 这是完成。这是您需要编写的唯一代码。

答案 1 :(得分:0)

解决此问题的最简单方法是将所有元素放入一个scrollview,然后将键盘高度添加到视图底部的常量以进行超视图。

当显示或隐藏键盘时,iOS会向任何已注册的观察者发出以下通知:

UIKeyboardWillShowNotification UIKeyboardDidShowNotification UIKeyboardWillHideNotification UIKeyboardDidHideNotification

以下是您可以做的事情:

  1. 获取键盘的大小。
  2. 调整底部内容插入 键盘高度的滚动视图。
  3. 滚动目标文字 现场进入视野。
  4. 这样的事情:

     func keyboardWillShow(notification: NSNotification) {
            print("KEYBOARD WILL SHOW")
            let userInfo:NSDictionary = notification.userInfo! as NSDictionary
            let keyboardFrame:NSValue = userInfo.value(forKey: UIKeyboardFrameEndUserInfoKey) as! NSValue
            let keyboardRectangle = keyboardFrame.cgRectValue
            let keyboardHeight = keyboardRectangle.height
            bottomConstraint.constant = keyboardHeight + 8
            UIView.animate(withDuration: 0.5, animations: { [weak self] in
                self?.view.layoutIfNeeded() ?? ()
            })
    
            UIView.animate(withDuration: 0.3) {
                self.view.layoutIfNeeded()
            }
        }
        func dismissKeyboard() {
            //Causes the view (or one of its embedded text fields) to resign the first responder status.
            view.endEditing(true)
            bottomConstraint.constant = 8
            UIView.animate(withDuration: 0.5, animations: { [weak self] in
                self?.view.layoutIfNeeded() ?? ()
            })
        }
    

答案 2 :(得分:0)

您可以将这两个framework用于已解决的keyboard问题:

  • IQKeyboardManager:Link

  • iOSUtilities来源:Link