iOS - Отключить клавиатуру при касании за пределами UITextField

Я обнаружил, что если вход (файл) является внешней формой, тогда событие обжатия кликов вызывает диалог файла.

441
задан Tamás Sengel 15 December 2017 в 10:17
поделиться

4 ответа

Я вижу, что у некоторых людей возникают проблемы с использованием метода UITapGestureRecognizer. Самый простой способ, которым я выполнил эту функцию, при этом оставляя неизменным поведение нажатия моей существующей кнопки, это добавление только одной строки к ответу @ Jensen2k:

[tap setCancelsTouchesInView:NO];

Это позволило моим существующим кнопкам по-прежнему работать без использования @ Метод Дмитрия Ситникова.

Читайте об этом property здесь (ищите CancelsTouchesInView): Справочник по классам UIGestureRecognizer

Я не уверен, как это будет работать с полосами прокрутки, так как я Я вижу, у некоторых были проблемы, но, надеюсь, кто-то другой может столкнуться с тем же сценарием, что и у меня.

85
ответ дан Rishil Patel 15 December 2017 в 10:17
поделиться

Это должен быть самый простой способ скрыть клавиатуру, прикоснувшись к ней снаружи:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.view endEditing:YES];    
}

(из Как отключить клавиатуру, когда пользователь касается другой области за пределами текстового поля? )

6
ответ дан Community 15 December 2017 в 10:17
поделиться

Если я вас правильно понял, вы хотите отказаться от прослушивания клавиатуры на внешнем textfield, но у вас нет ссылки на ваш textfield.

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

  • Возьмите глобальный textField, назовем его reftextField
  • Теперь в textFieldDidBeginEditing установите ссылочное текстовое поле на

    - (void) textFieldDidBeginEditing:(UITextField *)textField{
        reftextField = textField;
    }
    
  • Теперь вы можете с радостью использовать на любой кнопке часы (рекомендуется добавить прозрачную кнопку при начале редактирования)

    - (void)dismissKeyboard {
          [reftextField resignFirstResponder];
    }
    
  • Или для отказа от кнопки Готово попробуйте это.

    //for resigning on done button    
    - (BOOL) textFieldShouldReturn:(UITextField *)textField{
        [textField resignFirstResponder];
        return YES;
    }
    
5
ответ дан rptwsthi 15 December 2017 в 10:17
поделиться

Если представление вообще встроено в UIScrollView, то вы можете использовать следующее:

tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeInteractive;

Первое будет анимировать экран выключенной клавиатуры при прокрутке табличного представления, а второе скрыть клавиатура, как в приложении «Сообщения».

Обратите внимание, что они доступны на iOS 7.0 или выше.

5
ответ дан Joe Masilotti 15 December 2017 в 10:17
поделиться
Другие вопросы по тегам:

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