настройка позволяет автоматически возвращать ключ на UISearchBar - PullRequest
0 голосов
/ 20 мая 2010

Пишу для iphone OS 3.1.3. Я хочу, чтобы кнопка поиска на клавиатуре на панели UISearchBar постоянно включала кнопку поиска. Если бы это был какой-то старый UITextField (не панель поиска), свойство было бы enableReturnKeyAutomatics.

Я попытался установить это, используя пример, приведенный на http://discussions.apple.com/thread.jspa?messageID=8457910

, что предполагает:

UITextField *searchTextField ; 
searchTextField = [[searchBar subviews]objectAtIndex:0];
searchTextField.enablesReturnKeyAutomatically = NO ;

Должно работать.

к сожалению это вылетает:

2010-05-20 08:36:18.284 ARemote[5929:207] *** -[UISearchBarBackground setEnablesReturnKeyAutomatically:]: unrecognized selector sent to instance 0x3b31980
2010-05-20 08:36:18.284 ARemote[5929:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UISearchBarBackground setEnablesReturnKeyAutomatically:]: unrecognized selector sent to instance 0x3b31980'

Я также пытался

((UITextField *)[(NSArray *)[searchBar subviews] objectAtIndex:0]).enablesReturnKeyAutomatically = NO;</code>

Что дает аналогичные результаты.

Есть идеи?

Приветствие Erik

Ответы [ 2 ]

7 голосов
/ 20 мая 2010

Вы получаете доступ к документированной иерархии представлений UISearchBar. Это может привести к отклонению, но поведение вашего приложения будет не определено при обновлении прошивки.

Это пример. Когда этот ответ был опубликован, UITextField был еще 1-м подпредставлением панели поиска. Теперь 1-е подпредставление становится UISearchBarBackground.

Минимальное изменение состоит в том, чтобы перебрать всю иерархию представлений и найти фактическое UITextField.

for (id subview in searchBar.subviews) {
   if ([subview respondsToSelector:@selector(setEnablesReturnKeyAutomatically:)]) {
      [subview setEnablesReturnKeyAutomatically:NO];
      break;
   }
}

Но для прямой совместимости лучше использовать UITextField вместо UISearchBar или не требовать, чтобы кнопка поиска была включена постоянно (например, используйте кнопку «Отмена»).

1 голос
/ 10 декабря 2014

На самом деле вы можете просто установить searchBar.enablesReturnKeyAutomatically = NO;

...