Когда UITextField редактирует, вызов setText будет зависать некоторое время - PullRequest
0 голосов
/ 20 декабря 2018

Я форматирую текст UITextField при вводе.Код:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString *newString = nil;
    // format 'newString' here 
    [textField setText:newString];
    // move cursor
    return NO;
}

Но setText: некоторое время будет зависать в главном потоке.Меньше текста, больше времени.

Итак, я попробовал следующий код, resignFirstResponder до setText::

[UIView setAnimationsEnabled:NO];
[textField resignFirstResponder];
[textField setText:newString];
[textField becomeFirstResponder];
[UIView setAnimationsEnabled:YES];

Это решило проблему зависания.

Но почемубудет висетьИ если есть лучшее решение.

1 Ответ

0 голосов
/ 20 декабря 2018

Что такое newText?Вы имеете в виду newString (который вы определяете как nil).Обратите внимание, UITextField text не nullable.

...