Отключить клавиатуру UITextField? - PullRequest
56 голосов
/ 11 апреля 2011

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

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

Ответы [ 8 ]

98 голосов
/ 02 декабря 2011

По умолчанию свойство 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.
}
56 голосов
/ 18 декабря 2015

В Swift 2.x, 3.x, 4.x

textField.inputView = UIView()

делает трюк

4 голосов
/ 11 апреля 2011

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

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

3 голосов
/ 11 апреля 2011

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

myTextView.editable = NO
1 голос
/ 25 июля 2016

У меня та же проблема, когда было 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 в моем случае) и отображать значение по умолчанию, когда пользователь переключается на второе текстовое поле ( Номер счета на моем снимке экрана)

enter image description here

0 голосов
/ 23 декабря 2016

В Xcode 8.2 вы можете легко это сделать, сняв отметку с опции «включено».

  1. Нажмите на текстовое поле, которое вы хотите отредактировать
  2. Перейти к аттирубе инспектора на правой стороне
  3. Снимите флажок «включен» для состояния

enter image description here

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

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    myTextField.isEditable = false
}
0 голосов
/ 28 октября 2016
private void TxtExpiry_EditingDidBegin(object sender, EventArgs e)
    {
        ((UITextField)sender).ResignFirstResponder();
    }

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

0 голосов
/ 14 июля 2016

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

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

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

  1. Перейти к Main.Storyboard
  2. Нажмите UITextView , чтобы выбрать его
  3. Показать Инспектор атрибутов
  4. Снимите отметку Редактируемый Поведение
...