держать UIMenuController видимым при наборе текста

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

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
        [[UIMenuController sharedMenuController] setMenuVisible:YES animated:YES];
    return YES;
}

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

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


person codemolly    schedule 05.11.2014    source источник


Ответы (1)


Я пытался найти способ сделать то же самое. Предполагая, что ваш код отображает UIMenuController, делая представление первым ответчиком, добавьте фрагмент кода, который делает меню видимым внутри операционного блока:

[[NSOperationQueue mainQueue] addOperationWithBlock:^{ [[UIMenuController sharedMenuController] setMenuVisible:YES animated:YES]; }];

Это отображает меню и текст, введенный в текстовое поле. Но недостаток в том, что текстовое поле больше не является первым ответчиком. Таким образом, пользователь должен снова нажать на текстовое поле, чтобы ввести новый символ. Это не очень удобно для пользователя.

Другим вариантом автозаполнения является использование UITableView вместо UIMenuController, как здесь: http://www.raywenderlich.com/336/auto-complete-tutorial-for-ios-how-to-auto-complete-спользовательскимизначениями

Но UIMenuController чище. Я испробовал много подходов, чтобы сделать UIMenuController моим победителем, но мне не удалось оптимизировать этот подход. Если вы нашли решение, пожалуйста, дайте мне знать.

person Koushik Ravikumar    schedule 20.11.2014
comment
В итоге я пошел по другому пути, который занимает меньше недвижимости и на самом деле выглядит действительно здорово. Посмотрите это текстовое поле автозаполнения, опубликованное Джоном Сибли в HotelTonight. - person codemolly; 13.12.2014
comment
Да, альтернативы UIMenuController намного привлекательнее. - person Koushik Ravikumar; 17.12.2014