En el control UISearchBar, ¿es la forma de cambiar el título de la tecla de búsqueda para el Listo?Cambiar el botón de búsqueda UISearchBar/teclado Título
Respuesta
Para una barra de búsqueda tablesearchbar llamado:
// 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
}
}
}
Como los teclados de estilo de alerta son semitransparentes, puedo ver mi punto de vista detrás de él. No se ve muy bien ya que tengo varios elementos detrás del teclado que dificultan que las teclas se destaquen. Yo quería un teclado negro.
Así que animé un UIImageView negro en posición detrás del teclado cuando se edita el texto. Esto da la apariencia de un teclado completamente negro.
- (void)textFieldDidBeginEditing:(UITextField *)textField {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.25];
blackBoxForKeyboard.frame = CGRectMake(0, 377, 320, 216);
[UIView commitAnimations];
}
Uno más indirecta útil, al bucle de ejecución código (en "@try") sección.
Esto permitió botón "Done" cuando el campo de texto está vacío:
UITextField *tf = (UITextField *)searchBarSubview;
tf.enablesReturnKeyAutomatically = NO;
Gracias! Esto también funciona con la solución de Gregory para iOS7. – jbandi
Como se trata de un protocolo con métodos opcionales, debe probar cada método por separado en lugar de tratar la atención.
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;
}
}
Esto funcionará para iOS < = 6. Para iOS> = 7, es necesario bucle en searchBar.subviews[0].subviews
.
A partir de iOS 7 beta 5, la respuesta de bucle de ejecución no funcionó para mí, pero esto hizo:
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];
}
}
}
}
Por si acaso no está claro, la razón por la que se usa if/else es para la compatibilidad con versiones anteriores de iOS 6 y el resto es para iOS 7. –
respuesta fantástica. esto funciona en iOS 7. gracias – Katushai
Esto funciona en iOS8 –
Probé todas las soluciones que se muestran aquí, y ninguno de ellos trabajó para mi UISearchBar (xcode5 compilando para iOS7). Terminé con esta función recursiva que funcionó para mí:
- (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];
}
}
entonces lo llamé así:
_searchBar = [[UISearchBar alloc] init];
[self fixSearchBarKeyboard:_searchBar];
Con Xcode 5 + iOS7, la entrada de texto estará en una sub-subvista en lugar de una subvista. Así que básicamente usaste mi solución Xcode 4 y agregué una llamada recursiva. Para obtener mejores resultados, puede probar la versión de iOS, y si es iOS7, navegue a través de 'subviews [0] .subviews' en lugar de' subviews'. –
Al menos para iOS 8, simplemente:
[self.searchBar setReturnKeyType:UIReturnKeyDone];
Sólo por que cubre todas las versiones de 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;
}
}
para SWIFT para cambiar tecla de retorno de UISearchBar
searchBar.returnKeyType = UIReturnKeyType.Done
enumeración disponibles son las siguientes
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
}
Sólo un recordatorio! Si searchBar se mantiene como primer respondedor, después de cambiar el returnKeyType, debe cerrar el teclado y volver a abrirlo para ver los cambios.
search.resignFirstResponder()
searchBar.returnKeyType = UIReturnKeyType.Done
search.becomeFirstResponder()
- 1. Cómo cambiar UITabBarController ¿Más título de botón?
- 2. Cambiar el título con Javascript
- 3. file_field Botón de búsqueda personalizar
- 4. ¿Cómo obtengo el título del botón MessageBox?
- 5. ¿Puedo cambiar el título de mi FolderBrowserDialog?
- 6. Cambiar el título de Javascript Alert
- 7. ¿Cómo cambiar el título de UIButton?
- 8. Cómo cambiar el título de CDockablePane
- 9. No se puede cambiar de nuevo el botón de título, pero puedo ocultarlo
- 10. Cambiar el título de MenuItem en tiempo de ejecución
- 11. ¿Cómo puedo cambiar el color del título de UIButton?
- 12. Cómo cambiar el título del botón Atrás de UINavigationBar a "Atrás"
- 13. detectar el botón de búsqueda del teclado
- 14. ¿Cómo cambiar el título en los listados?
- 15. ¿Es posible cambiar el título Eclipse
- 16. Cambiar el título del eje HighCharts
- 17. Cómo cambiar el título div usando jQuery
- 18. iOS compare botón título de la cadena
- 19. jQuery Tooltip Herramientas - Cambiar título
- 20. Cambiar el tamaño del tipo de entrada = botón de búsqueda "archivo" en firefox?
- 21. botón personalizado: cambiar el estilo cuando se pulsa el botón
- 22. Cambiar el estado del botón de alternar desde otro botón
- 23. Cómo cambiar el texto del botón de retroceso de uinavigationbar
- 24. ¿Cambiar el texto del botón de xcode?
- 25. Cambiar el color de la barra de título en WinForm
- 26. Cambiar el título de la barra de navegación programáticamente
- 27. Cambiar un título de panel externo
- 28. Establezca el título de UINavigationBar
- 29. Botón de búsqueda dentro del cuadro de búsqueda como Bing
- 30. Dos textos en el botón, título y subtítulo
Aquí expliqué http://stackoverflow.com/a/26712861/2981840 – Chidhambaram