54 votos

Cambio UISearchBar De Teclado/Botón De Búsqueda De Título

En el UISearchBar de control, es una manera de cambiar la clave de Búsqueda del título para que el teclado se Hace?

99voto

Run Loop Puntos 5173

Para una barra de búsquedas llamado 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
                }
            }
        }

43voto

Como de iOS 7 beta 5, Ejecute el Bucle respuesta no trabajo para mí, pero este lo 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];
            }
        }      
    }
}

18voto

skippy Puntos 568

Uno de los más útiles pista, para la Ejecución del Bucle de código (en "@intente") de la sección.

Esta habilitado el botón "Done" cuando el campo de texto está vacío:

UITextField *tf = (UITextField *)searchBarSubview;
tf.enablesReturnKeyAutomatically = NO;

1voto

Cœur Puntos 1538

Como se trata de un protocolo con métodos opcionales, debe probar cada método por separado en lugar de intentar la captura.

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, usted necesita bucle en searchBar.subviews[0].subviews.

0voto

RyeMAC3 Puntos 794

Puesto que la Alerta al estilo de los teclados son semi-transparente, puedo ver mi punto de vista detrás de él. No se ve muy bien desde que tiene varios elementos detrás del teclado que hace que sea difícil para las claves para destacar. Yo quería un teclado negro.

Así que animado de un negro UIImageView en la posición detrás del teclado cuando el texto está editado. Esto da la apariencia de un teclado negro.

- (void)textFieldDidBeginEditing:(UITextField *)textField {

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.25]; 

    blackBoxForKeyboard.frame = CGRectMake(0, 377, 320, 216);
    [UIView commitAnimations]; 

}

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X