Как отключить клавиатуру для UITextView

При нажатии кнопки «Готово» на клавиатуре срабатывает следующее. Он переходит в условное и возвращает false. Однако клавиатура остается на экране.

class MyViewController: UIViewController, UITextViewDelegate{


func textView(textView: UITextView!, shouldChangeTextInRange: NSRange, replacementText: NSString!) -> Bool {
    if(replacementText.isEqualToString("\n")) {
        textBox.resignFirstResponder()
        return false
    }
    return true
}

textBox является делегатом для представления. Я подключил это через Interface Builder. Любые идеи, почему он не отклоняет клавиатуру?


person 4thSpace    schedule 18.03.2015    source источник
comment
Вы установили делегата текстового поля на себя?   -  person Christian    schedule 18.03.2015
comment
В нижней части OP я упоминаю, что он подключен через IB. Я даже добавил textBox.delegate = self в viewDidLoad(), но все равно ничего.   -  person 4thSpace    schedule 18.03.2015
comment
@4thSpace попробуйте изменить textBox на textView.resignFirstResponder(), посмотрите, работает ли это   -  person IxPaka    schedule 18.03.2015
comment
Используйте textView, который передается в методе делегата, вместо свойства textBox.   -  person Arbitur    schedule 18.03.2015
comment
Ах, я неправильно понял вас. Используете ли вы какие-либо другие методы делегирования, такие как textViewShouldEndEditing, которые могут помешать работе resignfirstresponder? Также вы пытались использовать textView, параметр делегата вместо вашего textBox?   -  person Christian    schedule 18.03.2015
comment
Идеально! Это должно было быть передано в textView. Может ли кто-нибудь из вас опубликовать ответ?   -  person 4thSpace    schedule 18.03.2015
comment
возможный дубликат Отключить клавиатуру для UITextView без использования клавиши возврата   -  person sylvanaar    schedule 18.03.2015


Ответы (1)


Прежде всего убедитесь, что ваш My ViewController является делегатом textField, а затем в методе shouldChangeTextInRange используйте textView, который передается в методе делегата, вместо вашего свойства textBox.

Например:

class MyViewController: UIViewController, UITextViewDelegate{

    func viewDidLoad(){
      super.viewDidLoad()
      textBox.delegate = self
    }

func textView(textView: UITextView!, shouldChangeTextInRange: NSRange, replacementText: NSString!) -> Bool {
    if(replacementText.isEqualToString("\n")) {
        textView.resignFirstResponder()
        return false
    }
    return true
}
person Guy Kahlon    schedule 18.03.2015