2011-08-25 17 views
8

Uso una vista tabella con UISearchDisplayController in combinazione con UISearchBar. La barra di ricerca nasconde automaticamente il pulsante Annulla quando è inappropriato, ma sto usando il controller di visualizzazione in uno stato modale, quindi mi piacerebbe mostrare sempre il pulsante Annulla e usarlo per far apparire il controller modale di visualizzazione quando la ricerca viene annullata.Mostra sempre il pulsante Annulla in una UISearchBar

C'è un modo per forzare il pulsante Annulla a rimanere visibile senza creare una barra di ricerca personalizzata?

+0

Che cosa succede se si imposta chiamando il metodo di istanza setShowsCancelButton: animato: – Saran

+0

Impostare il pulsante per visibile nei metodi delegato non funziona, nessuno fa sottoclasse 'UISearchBar' e ridefinendo tutto 'showsCancelButton' metodi. –

risposta

2

si dovrebbe usare il display delegato

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

Wow ... Chi si sente stupido per aver appena scoperto 'showsCancelButton' ...? Questo tizio >> – dooleyo

1

questo funziona

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

Ho trovato un solution dopo aver cercato un sacco.

Attualmente funziona per me. Dopo aver aggiunto il codice, ho modificato la classe in Interface Builder per utilizzare la classe anziché UISearchBar. Ho anche "Mostra pulsante Annulla" abilitato.

Il codice:

//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

So che questo thread è obsoleto, ma sembra che questa soluzione utilizzi API private e probabilmente causerà il rifiuto dell'app durante la revisione dell'app. –

Problemi correlati