Nel controllo UISearchBar, è il modo per modificare il titolo del tasto Search per la tastiera su Fatto?Cambia UISearchBar/Keyboard Search Button Titolo
risposta
Per una barra di ricerca di nome tablesearchbar:
// Set the return key and keyboard appearance of the search bar
for (UIView *searchBarSubview in [tableSearchBar subviews]) {
if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)]) {
@try {
[(UITextField *)searchBarSubview setReturnKeyType:UIReturnKeyDone];
[(UITextField *)searchBarSubview setKeyboardAppearance:UIKeyboardAppearanceAlert];
}
@catch (NSException * e) {
// ignore exception
}
}
}
Dal momento che le tastiere in stile Alert sono semi-trasparenti, posso vedere mio punto di vista dietro di esso. Non sembra molto bello dato che ho molti elementi dietro la tastiera che rendono difficile la distinzione dei tasti. Volevo una tastiera completamente nera.
Così ho animato un UIImageView nero in posizione dietro la tastiera quando si modifica il testo. Questo dà l'aspetto di una tastiera completamente nera.
- (void)textFieldDidBeginEditing:(UITextField *)textField {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.25];
blackBoxForKeyboard.frame = CGRectMake(0, 377, 320, 216);
[UIView commitAnimations];
}
più Un suggerimento utile, al Run Loop codice (in "@try") sezione.
Ciò ha permesso il pulsante "Done" quando il campo di testo è vuoto:
UITextField *tf = (UITextField *)searchBarSubview;
tf.enablesReturnKeyAutomatically = NO;
Grazie! Funziona anche con la soluzione di Gregory per iOS7. – jbandi
Come è un protocollo con metodi opzionali, è necessario verificare ogni metodo separatamente invece di cercare l'attenzione.
for (UIView *searchBarSubview in searchBar.subviews)
{
if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)])
{
// keyboard appearance
if ([searchBarSubview respondsToSelector:@selector(setKeyboardAppearance:)])
[(id<UITextInputTraits>)searchBarSubview setKeyboardAppearance:UIKeyboardAppearanceAlert];
// return key
if ([searchBarSubview respondsToSelector:@selector(setReturnKeyType:)])
[(id<UITextInputTraits>)searchBarSubview setReturnKeyType:UIReturnKeyDone];
// return key disabled when empty text
if ([searchBarSubview respondsToSelector:@selector(setEnablesReturnKeyAutomatically:)])
[(id<UITextInputTraits>)searchBarSubview setEnablesReturnKeyAutomatically:NO];
// breaking the loop when we are done
break;
}
}
Questo funziona per iOS < = 6. Per iOS> = 7, è necessario loop in searchBar.subviews[0].subviews
.
Come di iOS 7 beta 5, la risposta di Run Loop non ha funzionato per me, ma questo ha fatto:
for(UIView *subView in [searchBar subviews]) {
if([subView conformsToProtocol:@protocol(UITextInputTraits)]) {
[(UITextField *)subView setReturnKeyType: UIReturnKeyDone];
} else {
for(UIView *subSubView in [subView subviews]) {
if([subSubView conformsToProtocol:@protocol(UITextInputTraits)]) {
[(UITextField *)subSubView setReturnKeyType: UIReturnKeyDone];
}
}
}
}
Nel caso in cui non sia chiaro, il motivo se/else viene utilizzato è il if per iOS 6 compatibilità con le versioni precedenti e il resto è per iOS 7. –
risposta fantastica. questo funziona su iOS 7. grazie – Katushai
Funziona su iOS8 –
ho provato tutte le soluzioni illustrate qui, e nessuno di loro ha lavorato per la mia UISearchBar (xcode5 compilazione per iOS7). Ho finito con questa funzione ricorsiva che ha funzionato per me:
- (void)fixSearchBarKeyboard:(UIView*)searchBarOrSubView {
if([searchBarOrSubView conformsToProtocol:@protocol(UITextInputTraits)]) {
if ([searchBarOrSubView respondsToSelector:@selector(setKeyboardAppearance:)])
[(id<UITextInputTraits>)searchBarOrSubView setKeyboardAppearance:UIKeyboardAppearanceAlert];
if ([searchBarOrSubView respondsToSelector:@selector(setReturnKeyType:)])
[(id<UITextInputTraits>)searchBarOrSubView setReturnKeyType:UIReturnKeyDone];
if ([searchBarOrSubView respondsToSelector:@selector(setEnablesReturnKeyAutomatically:)])
[(id<UITextInputTraits>)searchBarOrSubView setEnablesReturnKeyAutomatically:NO];
}
for(UIView *subView in [searchBarOrSubView subviews]) {
[self fixSearchBarKeyboard:subView];
}
}
Poi ho chiamato in questo modo:
_searchBar = [[UISearchBar alloc] init];
[self fixSearchBarKeyboard:_searchBar];
Con Xcode 5 + iOS7, l'immissione di testo sarà in una sottoview anziché in una sottoview. Quindi in pratica hai usato la mia soluzione Xcode 4 e ho aggiunto una chiamata ricorsiva. Per le migliori prestazioni, puoi provare per la versione iOS e, se si tratta di iOS7, puoi navigare attraverso 'sottoview [0] .subviews' invece di' subviews'. –
Almeno per iOS 8, semplicemente:
[self.searchBar setReturnKeyType:UIReturnKeyDone];
Solo per che copre tutte le versioni iOS:
NSArray *subviews = [[[UIDevice currentDevice] systemVersion] floatValue] < 7 ? _searchBar.subviews : _searchBar.subviews[0].subviews;
for (UIView *subview in subviews)
{
if ([subview conformsToProtocol:@protocol(UITextInputTraits)])
{
UITextField *textField = (UITextField *)subview;
[textField setKeyboardAppearance: UIKeyboardAppearanceAlert];
textField.returnKeyType = UIReturnKeyDone;
break;
}
}
Per Swift per cambiare tasto di ritorno di UISearchBar
searchBar.returnKeyType = UIReturnKeyType.Done
enum disponibili sono le seguenti
public enum UIReturnKeyType : Int {
case Default
case Go
case Google
case Join
case Next
case Route
case Search
case Send
case Yahoo
case Done
case EmergencyCall
@available(iOS 9.0, *)
case Continue
}
Solo un promemoria! Se searchBar rimane come primo risponditore, dopo aver modificato returnKeyType, devi chiudere la tastiera e farlo scattare di nuovo per vedere le modifiche.
search.resignFirstResponder()
searchBar.returnKeyType = UIReturnKeyType.Done
search.becomeFirstResponder()
- 1. Cambia titolo di MFMailComposeViewController
- 2. Cambia titolo frame Tkinter
- 3. Cambia titolo di avviso JavaScript
- 4. Cambia barra azioni Colore titolo
- 5. Cambia carattere in un titolo a due righe titolo
- 6. Cambia il titolo della legenda ggplot
- 7. UIButton cambia titolo al valore predefinito
- 8. citeseerx search api
- 9. Come rendere il pulsante Dropdown che cambia il suo titolo ha diversi link?
- 10. Cambia il colore del titolo principale della navigazione in MFMailComposeViewController
- 11. Android - Cambia la barra delle azioni Titolo Testo Colore
- 12. iOS8 Today Widget - Cambia titolo e aggiungi elementi predefiniti
- 13. Android - Cambia sfondo titolo della finestra di dialogo personalizzata
- 14. Cambia il titolo della finestra X11 dopo l'avvio di emacs
- 15. Il carattere del titolo non cambia nella barra di navigazione
- 16. Button ActionListener
- 17. Wikipedia Search API full-text per tornare articoli con il titolo, snippet e immagine
- 18. sql search su campi contenenti segni diacritici
- 19. Override NSWindow close button
- 20. Sphinx Search Engine & Python API
- 21. Google Places Nearby Search
- 22. Binary Search Tree Destructor
- 23. IndexedDB Fuzzy Search
- 24. Laravel Search Relationship
- 25. ElASTSearch NEST Search
- 26. Google search policy
- 27. Facebook Style AJAX Search
- 28. _really_ disable GtkTreeView search
- 29. OCAML Depth-First Search
- 30. Creazione Binary Search Trees
Qui ho spiegato http://stackoverflow.com/a/26712861/2981840 – Chidhambaram