2013-02-15 2 views
8

Ich habe Searchbar implementiert, die Abbrechen Schaltfläche zeigt, sobald Benutzer Fokus in Suchleiste hat. Dafür habe ich searchBar.showsCancelButton = YES; in meiner searchBarTextDidBeginEditing Methode geschrieben. In searchBarSearchButtonClicked gebe ich die Tastatur zurück, damit der Benutzer die gesamte Tabellenansicht anzeigen kann.UISearchBar Cancel-Taste reagiert nicht

Problem: Zu diesem Zeitpunkt reagiert die Schaltfläche zum Abbrechen der Suchleiste nicht. Es reagiert nur, wenn die Suchleiste erneut den Fokus erhält. Ist dies die Standardeigenschaft der Suchleiste Abbrechen-Schaltfläche oder fehlt etwas in meinem Code. Ich möchte die Schaltfläche Abbrechen verwenden, ohne den Fokus erneut in der Suchleiste anzugeben.

+1

möchten, wie Sie auf das Textfeld von serachbar Sie zurücktreten firstresponder? –

+0

hast du meine Antwort überprüft? – Rajneesh071

+0

Seine wahre ... von Design oder nicht, sollte es funktionieren, wenn es vorhanden ist. – Morkrom

Antwort

4

Dies ist das Standardverhalten des Suchleistenabbruchtasters. Wenn Sie andere Funktionen wünschen, können Sie einfach die cancelnbutton-Eigenschaft für die Suchleiste deaktivieren und UIButton als Abbrechen-Schaltfläche verwenden.

+1

Danke !! Ich werde versuchen, meinen eigenen Abbrechen-Button zu implementieren – JiteshW

3

Ich denke, es ist ein Standardverhalten von UISearchBar, wenn es Fokus dann erhält und nur dann die Schaltfläche Abbrechen wird aktiviert. Sie können das Cancel-Button-Event von UISearchBar nicht abrufen, wenn es keinen Fokus hat.

So Meine suggession Ihre Aufgabe zu erreichen, ist,

  • erstellen ToolBar
  • Insert UIBarButtonItem mit benutzerdefinierter Ansicht als UISearchBar
  • Insert UIBarButtonItem namens "Abbrechen" mit der Aktion
4

Ja, Sie können machen Ihre UISearchBar Schaltfläche Abbrechen reagieren. Standardmäßig ist es deaktiviert, aber Sie können auf die Unteransicht zugreifen und die Schaltfläche zum Abbrechen aktivieren.

for (id object in [mySearchBar subviews]) 
{ 
    if ([object isKindOfClass:[UIButton class]]) 
    { 
     UIButton *searchBarCancelBtn = (UIButton*)object; 
     [searchBarCancelBtn setEnabled:YES]; 
    } 
} 

diese Antwort aus, wenn Sie eine andere Logik Custom clear button in UISearchBar text field