Проблема scrollView с UITextView, когда клавиатура скрывает / показывает уведомление - PullRequest
1 голос
/ 10 июля 2020

У меня несколько textField и textView в scrollView в моем viewController. Я обрабатываю отображение и скрытие клавиатуры с помощью этих кодов:

Я добавил эту строку кода в viewDidLoad:

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name:UIResponder.keyboardWillChangeFrameNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name:UIResponder.keyboardWillHideNotification, object: nil)

, а также эти 2 функции:

@objc func keyboardWillShow(notification:NSNotification){
    guard let keyboardValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue else { return }
        
    let keyboardScreenEndFrame = keyboardValue.cgRectValue
    let keyboardViewEndFrame = view.convert(keyboardScreenEndFrame, from: view.window)
    let bottom = keyboardViewEndFrame.height - view.safeAreaInsets.bottom + 16
        
    self.scrollView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: bottom , right: 0)
}
    
@objc func keyboardWillHide(notification:NSNotification){
    self.scrollView.contentInset = UIEdgeInsets.zero
}

все в порядке, когда я начинаю редактировать текстовое поле. но он не работает с textView и имеет проблемы с прокруткой до активного textView.

как я могу это исправить?

1 Ответ

1 голос
/ 10 июля 2020

Причина этой проблемы объясняется здесь , поэтому, если вы хотите использовать UITextView внутри UIScrollView, снимите отметку с Scrolling Enabled в правом инспекторе меню или установите его False из код.

введите описание изображения здесь

...