2016-10-26 2 views
-1

UISearchBarUIBarButtonItem (오른쪽)으로 추가했습니다. '취소'버튼을 표시해야하지만 표시 할 수 없습니다. 내가 개발중인 앱은 iPad 용이며 Objective-C로 작성되었습니다. 당신과 공유하기를 원할 때, 검색 막대의 너비를 늘리면 (왼쪽 + 50px) 검색 요구 사항에 적합한 솔루션을 찾아야합니다. 고맙습니다.UISearchBar as 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 : 그것은 UIBarButtonItemUISearchBar 인스턴스를 추가하는 것은 불가능합니다. 실제로 런타임에 호환되지 않는 포인터 유형 경고 및 크래시가 발생합니다. 이것은 아마도 사람들이 당신의 질문을 하향 투표하는 이유 일 것입니다.