Можно ли изменить UITextInputTraits во время просмотра UIKeyboard? - PullRequest
6 голосов
/ 28 января 2010

Я хочу изменить UITextInputTraits клавиатуры, пока она используется ....

Мой идеальный код будет выглядеть примерно так:

- (IBAction)nameTextDidChange:(UITextField *)sender {
    if ([sender.text isEqualToString:@""]) {
        sender.returnKeyType = UIReturnKeyDone;
    } else {
        sender.returnKeyType = UIReturnKeySearch;
    }
}

Итак ... У меня есть другая кнопка «Возврат» для пустой строки, так как я делаю строку с некоторым текстом. Размещенный выше код не работает, клавиатура сохраняет свои исходные черты ввода текста. *

Есть какие-нибудь идеи, или это никогда не сработает, как бы я ни старался?

Ура!

Ник.

Благодаря Дипаку, этот код я на самом деле использовал:

if ([sender.text isEqualToString:@""]) {
    sender.returnKeyType = UIReturnKeyDone;

    [sender resignFirstResponder];
    [sender becomeFirstResponder];
} else if (sender.returnKeyType == UIReturnKeyDone) {

    NSString *cachedLetter = sender.text;

    sender.returnKeyType = UIReturnKeySearch;

    [sender resignFirstResponder];
    [sender becomeFirstResponder];

    sender.text = cachedLetter;
}

Ответы [ 3 ]

5 голосов
/ 28 января 2010

Вы можете сделать эту работу, добавив следующие строки в конце метода.

if ([textField.text isEqualToString:@""]) {
    textField.returnKeyType = UIReturnKeyDone;

    [textField resignFirstResponder];
    [textField becomeFirstResponder];
} else if (textField.returnKeyType == UIReturnKeyDone) {
    textField.returnKeyType = UIReturnKeySearch;

    [textField resignFirstResponder];
    [textField becomeFirstResponder];
}

Это должно работать.

Вы в основном включаете и выключаете его, так что ввод текста изменяется. Второе условие - убедиться, что вы переворачиваете только при необходимости.

4 голосов
/ 01 июня 2012

[textField reloadInputViews] кажется, добивается цели ...

0 голосов
/ 17 февраля 2013

resignFirstResponder /comeFirstResponder & reloadInputViews имеют некоторые оговорки. См. Stackoverflow.com/questions/5958427/…. Они возвращают клавиатуру в исходное состояние. Поэтому, если пользователь переключился на одну из других раскладок клавиатуры (цифры, знаки препинания и т. Д.), Это состояние будет потеряно. Я никогда не нашел хорошего решения.

...