Как отклонить клавиатуру для UITextView с клавишей возврата?

В библиотеке IB введение говорит нам, что при нажатии клавиши return клавиатура для UITextView исчезнет. Но на самом деле ключ return может действовать только как '\ n'.

Я могу добавить кнопку и использовать [txtView resignFirstResponder], чтобы скрыть клавиатуру.

Но есть ли способ добавить действие для клавиши return на клавиатуре, чтобы мне не нужно было добавлять UIButton?

373
задан GabrieleMartini 17 January 2019 в 13:05
поделиться

33 ответа

Попробуйте это:

 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
    if ([text isEqualToString:@"\n"]) {
        [self.view endEditing:YES];
    }

    return YES;

}
4
ответ дан Shaik Riyaz 17 January 2019 в 13:05
поделиться

Я нашел ответ от Хосебамы , чтобы быть наиболее полным и чистым ответом, доступным в этой теме.

Ниже приведен синтаксис Swift 4 для него:

func textView(_ textView: UITextView, shouldChangeTextIn _: NSRange, replacementText text: String) -> Bool {
    let resultRange = text.rangeOfCharacter(from: CharacterSet.newlines, options: .backwards)
    if text.count == 1 && resultRange != nil {
        textView.resignFirstResponder()
        // Do any additional stuff here
        return false
    }
    return true
}
12
ответ дан Lou Zell 17 January 2019 в 13:05
поделиться

Просто решили эту проблему по-другому.

  • Создайте кнопку, которая будет помещена в фоновом режиме.
  • Из инспектора атрибутов измените тип кнопки на пользовательский, и кнопка станет прозрачной.
  • Разверните кнопку, чтобы охватить весь вид, и убедитесь, что кнопка находится позади всех других объектов. Простой способ сделать это - перетащить кнопку в верхнюю часть представления списка в представлении
  • и перетащить кнопку в файл viewController.h и создать действие (Отправленное событие: Touch Up Inside) как:

    (IBAction)ExitKeyboard:(id)sender;
    
  • В ViewController.m должно выглядеть так:

    (IBAction)ExitKeyboard:(id)sender {
        [self.view endEditing:TRUE];
    }
    
  • Запустить приложение, и когда вы щелкнете в сторону от TextView, исчезает клавиатура
5
ответ дан Sparkup 17 January 2019 в 13:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: