Взаимодействие с пользователем TextField отключено, но при прикосновении отображается сообщение об ошибке - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть UITextField, и в коде моего ViewController он установлен в зависимости от его значения

textField.isUserInteractionEnabled = false

или

textField.isUserInteractionEnabled = true

Теперь, когда взаимодействие с пользователем отключено, я бы хотелон по-прежнему реагирует на прикосновения и отображает сообщение об ошибке (например, не отображать другое представление), которое говорит пользователю, что редактирование этого текстового поля невозможно.

Как мне добиться этого самым скудным способом?Это решение здесь (https://stackoverflow.com/a/9117285) предлагает не отключать взаимодействие с пользователем, а отклонять изменения содержимого - это то, чего я не хочу (клавиатура не должна отображаться - она ​​не будет отображаться, когда взаимодействие с пользователем отключено,но я не могу реагировать на прикосновения тоже).

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Вместо использования isUserInteractionEnabled вы можете реализовать свои собственные isDisabled Bool и UITextFieldDelegate и реализовать func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool.Если isDisabled равно true, показать представление об ошибке и вернуть false, в противном случае вернуть true.В didSet isDisabled вы можете скрыть вид ошибки.

Возвращение false из этого метода должно остановить всплывающее окно клавиатуры и все еще позволит вам взаимодействовать с представлением.

0 голосов
/ 30 декабря 2018

Вам нужно либо добавить представление в текстовое поле, когда оно отключено жестом, чтобы показать соответствующее сообщение, либо сделать это

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

} 
@objc func keyShow ( _ not:NSNotification) {

    if shouldHideKeyB {

        self.view.endEditing(true)

        // show disabled message 
    }

}

, где shouldHideKeyB - текущее состояние текстового поля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...