Отключить клавиатуру для UITextfield

Мне интересно, как отключить поле ввода UITextfield. Установка textField.inputView = nil; или [textField setInputView:nil] в ShouldBeginEditing ничего не делает, а использование свойства userInteraction лишает возможности взаимодействовать с полем. В идеале я хотел бы удалить как курсор, так и клавиатуру, но при этом иметь возможность взаимодействовать и переключаться между методами текстового поля, используя ShouldBeginEditing и ShouldEndEditing. Есть ли способ сделать это?


person DOLOisSOLO    schedule 13.08.2013    source источник
comment
Что вы имеете в виду, переключаясь между методами текстового поля? Что вы хотите сделать с этим UITextField?   -  person Seamus Campbell    schedule 13.08.2013
comment
Вы хотите, чтобы ваша клавиатура не появлялась? это правильно?   -  person Samkit Jain    schedule 13.08.2013
comment
У меня есть несколько полей UIText. В настоящее время я использую textFieldShouldBeginEditing и textFieldShouldEndEditing, чтобы определить, какое поле в настоящее время активно для настройки таких вещей, как выделение текстового поля или изображения левого/правого просмотра.   -  person DOLOisSOLO    schedule 13.08.2013


Ответы (2)


Вы должны сделать это:

myTextField.inputView = UIView.new; //Empty UIView

Установка его на nil просто означает, что используется клавиатура по умолчанию.

Чтобы избавиться от каретки, создайте подкласс UITextField и переопределите caretRectForPosition:

- (CGRect) caretRectForPosition:(UITextPosition*)position
{
    return CGRectZero;
}
person mattsven    schedule 13.08.2013
comment
Это скроет клавиатуру, но установка представления ввода на новое представление по-прежнему отображает курсор в текстовом поле. - person DOLOisSOLO; 13.08.2013
comment
Вы не можете избавиться от курсора без создания подкласса UITextField. Я отредактировал свой ответ, как это сделать. - person mattsven; 14.08.2013

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

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

or

-(void)textFieldDidBeginEditing:(UITextField *)textField{
  [textField resignFirstResponder]; // hides keyboard
}
person Samkit Jain    schedule 13.08.2013
comment
Ни одно из решений не работает в этом случае. Мне все еще нужно, чтобы текстовое поле было активным, чтобы определить, какие свойства установить для каждого текстового поля, которое у меня есть в моем представлении. - person DOLOisSOLO; 13.08.2013