iPhone SDK: отключить автоматическое создание точки (.) в текстовом поле (или текстовом представлении)

Я отключил тип автоисправления для своего текстового поля, и он не показывает никаких других автоисправлений,

но он по-прежнему автоматически создает точку (.), когда я дважды нажимаю клавишу пробела.

Например, если я напишу «тест» и дважды нажму пробел, он автоматически изменится на «тест».

Кто-нибудь знает, как отключить эту функцию?

Большое спасибо.


person Will Yeo - MSFT    schedule 06.10.2009    source источник
comment
На ваш вопрос ответили?   -  person JoePasq    schedule 17.10.2009
comment
Не совсем для отключения функции, но я нашел своего рода обходной путь, который я разместил ниже.   -  person Will Yeo - MSFT    schedule 19.10.2009


Ответы (2)


Я нашел одно решение — оно использует UITextFieldTextDidChangeNotification, потому что это происходит после применения автокоррекции.

  1. Установите делегата для текстового поля
  2. Настроить уведомление

    - (void) viewDidLoad {
    ...
    [[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(textFieldDidChange:)
    name:UITextFieldTextDidChangeNotification object:tfTitle];
    }

  3. Затем обработчик уведомлений
    - (void)textFieldDidChange:(NSNotification *)aNotification
    {
    if ( [textField.text rangeOfString:@". "].length ) {
    // Change text
    textField.text = [textField.text stringByReplacingOccurrencesOfString:@". " withString:@" "];
    }
    }

person Will Yeo - MSFT    schedule 07.10.2009
comment
Но допустим, я ввел файл . и нет . Не создаст ли это там проблемы - person shashank; 11.08.2014

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

-(BOOL)shouldReplaceCharactersInRange:(NSRange)aRage withString:(NSString *)aString

Возможно, вы сможете проверить aString на наличие автоматически исправленной строки (возможно, @". "), а затем просто вернуть NO. Надеюсь, это не позволит заменить @" " на @". "

person Michael Waterfall    schedule 07.10.2009
comment
Привет, Бисбо, я попробовал ваше предложение и обнаружил, что автокоррекция (двойное нажатие пробела на точку) происходит после вызова этого метода, и изменение не вызывает этот метод для проверки. В любом случае спасибо, и, пожалуйста, дайте мне знать, если у вас есть какие-либо другие идеи. - person Will Yeo - MSFT; 07.10.2009
comment
Ааа, ну это просто мысль :-) - person Michael Waterfall; 07.10.2009
comment
Это работает, если вы проверяете наличие двойных пробелов, см. это: title="iphone отключить двойное нажатие пробела для ярлыка"> stackoverflow.com/questions/2576561/ - person Vincent Guerci; 22.03.2011