2011-08-25 22 views
8

Utilizo una vista de tabla con un UISearchDisplayController junto con un UISearchBar. La barra de búsqueda oculta automáticamente el botón de cancelar cuando no es apropiado, pero estoy usando el controlador de vista en un estado modal, por lo que me gustaría mostrar siempre el botón de cancelar y usarlo para mostrar el controlador de vista modal cuando se cancela la búsqueda.Mostrar siempre el botón cancelar en un UISearchBar

¿Hay alguna manera de forzar que el botón Cancelar permanezca visible sin crear una barra de búsqueda personalizada?

+0

¿Qué ocurre si se establece llamando al método de instancia setShowsCancelButton: Animación: – Saran

+0

Ajuste del botón para visible en los métodos de delegado no funciona, tampoco lo hace la subclasificación 'UISearchBar' y anulando todas 'showsCancelButton' métodos. –

Respuesta

2

Se debe utilizar la pantalla delegado

- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller 
{ 
    controller.searchBar.showsCancelButton = YES; 
} 
+0

Wow ... ¿Quién se siente tonto por solo descubrir 'showsCancelButton' ...? Este chico >> – dooleyo

1

esto funciona

- (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller 
{  
    controller.searchBar.showsCancelButton = YES; 
} 
1

encontré una solution después de buscar mucho.

Actualmente funciona para mí. Después de agregar el código, cambié la clase en Interface Builder para usar la clase en lugar de UISearchBar. También tengo habilitado el botón "Mostrar Cancelar Botón".

El código:

//NoAnimatingSearchBar.h 
@interface NoAnimatingSearchBar : UISearchBar 

@end 

//NoAnimatingSearchBar.m 
#import "NoAnimatingSearchBar.h" 

@implementation NoAnimatingSearchBar 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
    } 
    return self; 
} 

- (void) _destroyCancelButton { 
    NSLog(@"_destroyCancelButton"); 
} 

-(void)_setShowsCancelButton:(BOOL)showsCancelButton { 
    NSLog(@"_setShowsCancelButton:(BOOL)showsCancelButton"); 
} 
@end 
+0

Sé que este hilo es viejo, pero parece que esta solución usa API privadas, y es probable que la aplicación sea rechazada durante la revisión de la aplicación. –

Cuestiones relacionadas