Подтвердить что ты не робот

Отключить клавиатуру UITextField?

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

Как вообще отключить клавиатуру? Любая помощь приветствуется.

4b9b3361

Ответ 1

Свойство inputView UITextField по умолчанию равно nil, что означает, что стандартная клавиатура отображается.

Если вы назначаете ему пользовательское представление ввода или просто фиктивный вид, клавиатура не появится, но мигающий курсор все равно появится:

UIView* dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];    
myTextField.inputView = dummyView; // Hide keyboard, but show blinking cursor

Если вы хотите скрыть как клавиатуру, так и мигающий курсор, используйте этот подход:

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    return NO;  // Hide both keyboard and blinking cursor.
}

Ответ 2

Для Swift 2.x, 3.x, 4.x, 5.x

textField.inputView = UIView()

делает трюк

Ответ 3

Если это UITextField, вы можете установить для него свойство enabled значение NO.

Если это UITextView, вы можете реализовать -textViewShouldBeginEditing: в своем делетете, чтобы вернуть NO, чтобы он никогда не начинал редактирование. Или вы можете подклассифицировать его и переопределить -canBecomeFirstResponder, чтобы вернуть NO. Или вы можете использовать его поведение для редактирования и поместить свои числовые кнопки в представление, которое вы используете в качестве текстового вида inputView. Предполагается, что кнопки будут отображаться при редактировании текстового вида. Это может быть или не быть тем, что вы хотите.

Ответ 4

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

myTextView.editable = NO

Ответ 5

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

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 

метод просто не работал, как я ожидал для 2 текстовых полей, единственным обходным решением, которое я нашел, было

    UIView* dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];    
    myTextField.inputView = dummyView; 
    myTextField.inputAccessoryView = dummyView; 
    myTextField.tintColor =  myTextField.backgroundColor; //to hide a blinking cursor

Это полностью скроет клавиатуру для целевого textField (DropDownList в моем случае) и покажет значение по умолчанию, когда пользователь переключится на второе текстовое поле (номер учетной записи на моем снимке экрана)

введите описание изображения здесь

Ответ 6

Чтобы отключить клавиатуру UITextField:

  • Перейдите в Main.Storyboard
  • Нажмите UITextField, чтобы выбрать его
  • Показать инспектора Атрибуты
  • Снимите флажок Взаимодействие с пользователем

Чтобы отключить клавиатуру UITextView:

  • Перейдите в Main.Storyboard
  • Нажмите UITextView, чтобы выбрать его
  • Показать инспектора Атрибуты
  • Снимите флажок Редактируемый Поведение

Ответ 7

enter image description here Это простой взлом. Поместите пустую кнопку (Без текста) над клавиатурой и назначьте ей событие Event. Это остановит клавиатуру, и вы можете выполнить любое действие, которое вы хотите в ручке для нажатия кнопки

Ответ 8

private void TxtExpiry_EditingDidBegin(object sender, EventArgs e)
    {
        ((UITextField)sender).ResignFirstResponder();
    }

В С# это сработало для меня, я не использую раскадровку.

Ответ 9

В Xcode 8.2 вы можете сделать это легко, сняв флажок состояния "включено".

  • Нажмите на текстовое поле, которое вы хотите изменить.
  • Идите к инспектору attirube с правой стороны.
  • Снимите флажок "включено" для состояния

введите описание изображения здесь

Или, если вы хотите сделать это с помощью кода. Вы можете просто создать @IBOutlet этого текстового поля, дать ему имя, а затем использовать это имя переменной в функции viewDidLoad (или любой пользовательской, если хотите), как это (в swift 3.0.1):

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    myTextField.isEditable = false
}