ScrollView не двигался вверх при щелчке текстового поля внутри tableView - PullRequest
0 голосов
/ 21 января 2019

Я попробовал этот код: в 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 голосов
/ 21 января 2019

Вот наиболее распространенные и используемые библиотеки для управления таким поведением:

  1. TPKeyboardAvoiding
  2. IQKeyboardManager

Вы также можете установить их через CocoaPods.

0 голосов
/ 21 января 2019

Самый простой способ справиться с этой проблемой - установить модуль для IQKeyboardManager:

Установка через какао:

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

0 голосов
/ 21 января 2019

Это обычное поведение, IOS не может настроить содержимое над клавиатурой автоматически, в отличие от Android.Мое решение заключается в том, что вы можете обернуть все эти представления (фото, текстовое поле и т. Д.) Внутри tableView.И используйте библиотеку TPKeyboardAvoiding.

pod 'TPKeyboardAvoiding'

Если вы используете раскадровку, установите для базового класса tableView значение TPKeyboardAvoidingTableView.

.
...