Я добавил UISearchBar
как UIBarButtonItem
(правый). Мне нужно отобразить кнопку «Отмена», но я не могу ее отобразить. Приложение, которое я разрабатываю, предназначено для iPad и написано в Objective-C. Просто для того, чтобы поделиться с вами, желаемое поведение заключается в увеличении ширины панели поиска, когда она получает фокус (+ 50 пикселей влево), поэтому я должен найти решение, соответствующее этим требованиям. Заранее благодаренUISearchBar как UIBarButtonItem
-1
A
ответ
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
. Это на самом деле вызывает предупреждение о несовместимых указателях и сбое во время выполнения. Вероятно, это причина того, что люди сбрасывают ваш вопрос.
Есть ли веская причина для downvote? –