2010-08-25 18 views
9

En mi aplicación, necesito hacer algo de actividad, es decir, presionar el controlador otherview, cuando hago clic en una UISearchbar que se agrega a la vista.Qué evento se invoca cuando pulsamos UISearchBar

cuál es el mejor enfoque para lograr esto.

Como uno de cosa es cuando se hace clic UISearchbar "searchBarTextDidBeginEditing" despiden, pero con mi escenario cuando empujo controlador de vista de "searchBarTextDidBeginEditing" y volver searchBarTextDidBeginEditing ser llamado de nuevo, por lo que parece que no es el lugar ideal para empujar vista controlador.

Esta es maincontroller

// Search bar 
    iSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, 40)]; 
    iSearchBar.delegate = self; 
    iSearchBar.showsCancelButton = NO; 
    iSearchBar.autocorrectionType = UITextAutocorrectionTypeNo; 
    iSearchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
    [self addSubview:iSearchBar]; 

cuando hago clic UISearchBar A continuación, llama

- (void)searchBarTextDidBeginEditing:(UISearchBar*)searchBar 
    { 
    [self ShowMySearch]; 
    } 

En ShowMySearch, estoy empujando algún otro controlador permite decir searchcontroller y cuando pop esta searchcontroller y volver a maincontroller "searchBarTextDidBeginEditing" recibe de nuevo la llamada y el controlador de búsqueda vuelve a presionarse y provoca un problema. este comportamiento se observa sólo en 3.1.1

Gracias,

Sagar

+0

más información sería útil –

+0

más información añadida. –

Respuesta

15

Creo que llamar [auto ShowMySearch] en "searchBarTextDidBeginEditing" es un poco demasiado tarde. Supongo que se llama a "searchBarTextDidBeginEditing" en respuesta a que la barra de búsqueda se convierta en el primero en responder. Dado que es el primer respondedor cuando se empuja el controlador de búsqueda, es probable que se convierta nuevamente en el primero en responder cuando su controlador de búsqueda está fuera de contexto ... llamando de esta manera a "searchBarTextDidBeginEditing" una vez más.

Para lograr esto, me gustaría usar:

  • (BOOL) searchBarShouldBeginEditing: (UISearchBar *) SearchBar

Este método se llama después de la barra de búsqueda se toca, pero antes de que se convierte en el primer respondedor Y si devuelve NO, nunca se convertirá en el primer respondedor:

- (BOOL)searchBarShouldBeginEditing:(UISearchBar*)searchBar { 
    [self ShowMySearch]; 
    return NO; 
} 

¡Avíseme si esto funciona!

+0

Gracias Eric. Funciona perfectamente –

+0

gracias Eric Morand. esto funciona para mi – jpd

Cuestiones relacionadas