单击tableView中的文本字段时,ScrollView没有向上移动

时间:2019-01-21 03:12:19

标签: ios swift tableview scrollview textfield

我尝试了以下代码: 在viewWillAppear中:

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillDisappear), name: Notification.Name.UIKeyboardWillHide, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillAppear), name: NSNotification.Name.UIKeyboardWillShow, object: nil)

和:

@objc func keyboardWillAppear(notification:NSNotification) {
    print("keyboard appear")
    var info = notification.userInfo
    let keyBoardSize = info![UIKeyboardFrameEndUserInfoKey] as! CGRect
    scrollCreateEditContact.contentInset = UIEdgeInsetsMake(0.0, 0.0, keyBoardSize.height, 0.0)
    scrollCreateEditContact.scrollIndicatorInsets = UIEdgeInsetsMake(0.0, 0.0, keyBoardSize.height, 0.0)
}

@objc func keyboardWillDisappear(notification:NSNotification) {
    print("keyboard disappear")
    scrollCreateEditContact.contentInset = UIEdgeInsets.zero
    scrollCreateEditContact.scrollIndicatorInsets = UIEdgeInsets.zero
}

,结果是: enter image description here

我想要的是当键盘显示为以下内容时,文本字段没有被键盘覆盖:

enter image description here

该代码仅适用于不在tableView内的文本字段。 但是,当我单击tableView内的文本字段并将其记录下来时,始终会检测到“键盘出现”。

出现键盘时,TableView内的文本字段正确的代码未被键盘覆盖的是什么?

3 个答案:

答案 0 :(得分:3)

那是常见的行为,与Android不同,iOS无法自动调整键盘上方的内容。我的解决方案是,您可以将所有这些视图(照片,文本字段等)包装在tableView中。并使用TPKeyboardAvoiding库。

pod 'TPKeyboardAvoiding'

如果使用情节提要,请将tableView基类设置为TPKeyboardAvoidingTableView

答案 1 :(得分:2)

解决此问题的最简单方法是为IQKeyboardManager安装pod:

通过可可豆荚进行安装:

pod 'IQKeyboardManagerSwift'

用法:

import IQKeyboardManagerSwift

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

      IQKeyboardManager.shared.enable = true

      return true
    }
}

有关IQKeyboardManager的更多信息,请参考以下链接:

https://github.com/hackiftekhar/IQKeyboardManager

答案 2 :(得分:0)

以下是用于管理此类行为的最常用和最常用的库:

  1. TPKeyboardAvoiding
  2. IQKeyboardManager

您也可以通过CocoaPods安装它们。