2016-10-26 5 views
-1

Ich fügte ein UISearchBar als UIBarButtonItem (rechtes) hinzu. Ich muss den "Abbrechen" Button anzeigen, aber ich kann ihn nicht anzeigen. Die App, die ich entwickle, ist für das iPad und ist in Objective-C geschrieben. Nur um mit Ihnen zu teilen, das gewünschte Verhalten ist die Breite der Suchleiste zu erhöhen, wenn sie den Fokus (+ 50px nach links) erhalten, so muss ich eine Lösung finden, die mit diesen Anforderungen auch geeignet ist. Vielen Dank im VorausUISearchBar als UIBarButtonItem

+0

Gibt es einen guten Grund für den Downvote? –

Antwort

0

UISearchBar soll als ein Navigationselement titleView Attribut festgelegt werden, so dass dies das erste Problem sein könnte, die Sie erleben. Dann können Sie die Suchleiste über die Eigenschaft showsCancelButton veranlassen, die Schaltfläche zum Abbrechen anzuzeigen. Dies sollte Ihr Problem beheben, wenn die Abbrechen-Schaltfläche nicht angezeigt wird. Dann können Sie die Methoden UISearchBarDelegate verwenden, um die Suchleiste zu animieren, wenn sie in/aus dem Fokus kommt.

Der folgende Code zeigt alle diese in Aktion.

#import "ViewController.h" 

@interface ViewController() <UISearchBarDelegate> 

@property (strong, nonatomic) UISearchBar *searchBar; 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.searchBar = [UISearchBar new]; 
    self.searchBar.delegate = self; 
    self.searchBar.showsCancelButton = YES; 

    self.navigationItem.titleView = self.searchBar; 
} 

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { 
    [self.searchBar resignFirstResponder]; 
} 

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar { 
    // Animate to new position 
} 

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar { 
    // Animate back to original position 
} 

@end 

PS: Es ist unmöglich, eine UISearchBar Instanz als UIBarButtonItem hinzuzufügen. Es verursacht tatsächlich eine inkompatible Zeigerarten Warnung und einen Absturz zur Laufzeit. Dies ist wahrscheinlich der Grund für Leute, die Ihre Frage ablehnen.