2016-10-26 6 views
-1

Я добавил UISearchBar как UIBarButtonItem (правый). Мне нужно отобразить кнопку «Отмена», но я не могу ее отобразить. Приложение, которое я разрабатываю, предназначено для iPad и написано в Objective-C. Просто для того, чтобы поделиться с вами, желаемое поведение заключается в увеличении ширины панели поиска, когда она получает фокус (+ 50 пикселей влево), поэтому я должен найти решение, соответствующее этим требованиям. Заранее благодаренUISearchBar как UIBarButtonItem

+0

Есть ли веская причина для downvote? –

ответ

0

UISearchBar должен быть установлен как атрибут навигации, titleView, так что это может быть первая проблема, с которой вы столкнулись. Затем вы можете указать строке поиска отобразить кнопку отмены через свойство showsCancelButton. Это должно устранить проблему, если кнопка отмены не отображается. Затем вы можете использовать методы UISearchBarDelegate, чтобы анимировать панель поиска, когда она входит в/из фокуса.

Приведенный ниже код показывает все это в действии.

#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: Невозможно добавить UISearchBar экземпляр в качестве UIBarButtonItem. Это на самом деле вызывает предупреждение о несовместимых указателях и сбое во время выполнения. Вероятно, это причина того, что люди сбрасывают ваш вопрос.