iPhone ввод текста с завершением и кнопкой Готово (не поиск)


Используя iPhone SDK 3.0, я хочу разрешить ввод текста с (необязательными) опциями завершения, которые появляются при вводе текста, т. е. Также разрешая ввод freeformat. Поэтому я использую UISearchBar (который имеет события изменения текста) и UISearchDisplayController для представления опций.

Проблема в том, что я хочу, чтобы кнопка "готово" говорила "готово", а не "поиск", однако я не могу найти способ установить это. Ясно, что я чувствую, что мне чего-то не хватает, или построитель интерфейса API SDK будет иметь некоторые свойство для установки.

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

4 2

4 ответа:

+1 для ответа wal, но чтобы быть в безопасности и правильно реагировать на возможные изменения в иерархии представлений в последующих выпусках рассмотрите возможность использования этого кода:

NSArray *subviews = [<searchBar> subviews] ;
for(id subview in subviews) {
    if([subview isKindOfClass:[UITextField class]]) {
        [(UITextField*)subview setReturnKeyType:UIReturnKeyDone];
    }
}

Просто нужно было реализовать именно это и нигде не мог найти хороших ответов... вот я и подумал, что могу кое-что прояснить. Шагая через отладчик и копаясь в UISearchBar это довольно очевидно. Я просто нашел UITextView в uisearchbar subviews, и в этот момент Вы должны быть в состоянии установить returnkeytype на этом UITextView, как только вы получите дескриптор на нем.

Psuedocode- UISearchBarObject.SubViewAtIndexOfUITextField.ReturnKeyType = UIReturnKeyType.Сделано

Поместите этот код в viewDidLoad.

- (void)viewDidLoad {
...

NSArray *subviews = [self.searchDisplayController.searchBar subviews] ;
UITextField *searchField = [subviews objectAtIndex:([subviews count]-2)];
[searchField setReturnKeyType:UIReturnKeyDone];

...
}

Нечетно, UISearchBar должен поддерживать интерфейс UITextInputTraits, как это делают UITextField и UITextView (в документации об этом не говорится), и поэтому должен иметь returnKeyType. Я все равно попробую.

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