2010-06-16 12 views
15

Quiero mostrar ninguna barra de alcance cuando la tabla está vacía (antes de que la barra de búsqueda se edite por primera vez), no hay barra de alcance cuando se está editando, y finalmente se muestra cuando se realiza la edición. Sé sobre el protocolo UISearchBarDelegate, pero no sé cómo mostrar/ocultar la barra de alcance con animación. Sé que UISearchBar tiene setShowsScopeBar:, pero no setShowsScopeBar:animated: como lo hace para setShowsCancelButton:animated.¿Cómo se oculta/muestra la barra de alcance de UISearchBar con animación?

Editar Es importante que llame a [searchBar sizeToFit] después de mostrar/ocultar la barra de alcance. ¿Hay una buena manera de animar esto? (Debería hacer this? No parece funcionar.)

+0

Se pregunta la misma cosa, es un poco inconsistente. –

Respuesta

43

A continuación, se explica cómo hacer que el botón de cancelar y la barra de alcance se muestren solo durante la edición.

Código completo con la pequeña bonificación de animación (des) la apariencia del botón de cancelación:

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar { 
    searchBar.showsScopeBar = YES; 
    [searchBar sizeToFit]; 
    [searchBar setShowsCancelButton:YES animated:YES]; 

    return YES; 
} 

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar { 
    searchBar.showsScopeBar = NO; 
    [searchBar sizeToFit]; 
    [searchBar setShowsCancelButton:NO animated:YES]; 

    return YES; 
} 

Edición - Versión Swift 3

public func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool { 
    searchBar.showsScopeBar = true 
    searchBar.sizeToFit() 
    searchBar.setShowsCancelButton(true, animated: true) 

    return true 
} 

public func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool { 
    searchBar.showsScopeBar = false 
    searchBar.sizeToFit() 
    searchBar.setShowsCancelButton(false, animated: true) 

    return true 
} 

Fuente: http://www.alexandre-gomes.com/?p=418

+2

el código funciona, pero muestra la barra de alcance en la misma línea que la barra de búsqueda. ¿Hay alguna manera de mostrar dinámicamente la barra de alcance, pero debajo del campo de búsqueda? – andrei

+0

¿Alguna vez encontró una forma de evitar esto, @andrei? –

Cuestiones relacionadas