Swift 5 не использует рабочий метод из типа tutorial ‘NSNotification.Имя «не имеет члена «UIResponder»

#swift #uiviewcontroller #swift5

#swift #uiviewcontroller #swift5

Вопрос:

Я очень новичок в программировании и swift, поэтому я изучаю учебные пособия на YouTube. Я написал код, как в примере, но столкнулся с ошибкой. Скажите мне, как я могу это исправить. В tutorials у вас должна быть клавиатура, которая появляется и исчезает.

 import UIKit

class ViewController: UIViewController {

  
    override func viewDidLoad() {
        super.viewDidLoad()
        registerForKeyBoardNotification()
    }
    
    deinit {
        removeKeyBoardNotification()
    }
    
    @IBOutlet weak var scrollViewLogInScreen: UIScrollView!
    @IBOutlet weak var topTextField: UITextField!
    @IBOutlet weak var bottomTextField: UITextField!
    
    @IBAction func logInButtonTapped(_ sender: UIButton) {
        topTextField.resignFirstResponder()
        bottomTextField.resignFirstResponder()
    }
    
    @objc

    This code doesn't work with following errors:
    Type 'NSNotification.Name' has no member 'UIResponder' 

    **func registerForKeyboardNotification() {
        NotificationCenter.default.addObserver(self, selector: #selector(kbWillShow), name: NSNotification.Name.UIResponder.keyboardWillShowNotification, object: nil)
        
        NotificationCenter.default.addObserver(self, selector: #selector(kbWillHide), name: NSNotification.Name.UIResponder.keyboardWillHideNotification, object: nil)
    }**
    
     This code also doesn't work with following errors:
        Type 'NSNotification.Name' has no member 'UIResponder'

    **func removeKeyBoardNotification() {
        NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIResponder.keyboardWillShowNotification, object: nil)
        NotificationCenter.default.removeObserver(self, name:
        NSNotification.Name.UIResponder.keyboardWillHideNotification, object: nil)
    }**
    
    func kbWillShow(_ notification: Notification) {
        let userInfo = notification.userInfo
        let kbFrameSize = (userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
        scrollViewLogInScreen.contentOffset = CGPoint.init(x: 0, y: kbFrameSize.height)
    }
    
    func kbWillHide() {
        scrollViewLogInScreen.contentOffset = CGPoint.zero
        }
    
}
  

Ответ №1:

Просто удалите NSNotification.Name имя

 NotificationCenter.default.addObserver(self, selector: #selector(kbWillShow), name: NSNotification.Name.UIResponder.keyboardWillShowNotification, object: nil)
  

Это должно быть похоже :

  NotificationCenter.default.addObserver(self, selector: #selector(kbWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)