我创建了SearchBarView,这是UIView的子类,并将UISearchBar作为子视图添加到其中。在SearchBarView上调用removeFromSuperview (从searchBarSearchButtonClicked)后,UISearchBar不会消失。我试图从我创建SearchBarView的地方调用SearchBarView上的removeFromSuperview,但没有帮助。你知道为什么吗?
#import <UIKit/UIKit.h>
@interface SearchBarView : UIView <UISearchBarDelegate> {
UISearchBar *querySearchBar;
}
@end
#import "SearchBarView.h"
@implementation SearchBarView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
querySearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0,0,frame.size.width,44)];
querySearchBar.delegate = self;
[self addSubview:querySearchBar];
}
return self;
}
#pragma mark -
#pragma mark UISearchBarDelegate methods
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
[self removeFromSuperview];
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
searchBar.text = @"";
[searchBar resignFirstResponder];
[searchBar setShowsCancelButton:NO animated:YES];
}
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar
{
[searchBar setShowsCancelButton:NO animated:YES];
return YES;
}
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
[searchBar setShowsCancelButton:YES animated:YES];
return YES;
}
@endSearchBarView的创建方式如下:
SearchBarView *searchBarView = [[SearchBarView alloc] initWithFrame:CGRectMake(0, 0, 480, 300)];
UIView *rootView = [[[[UIApplication sharedApplication] delegate] window] rootViewController].view;
[rootView addSubview:searchBarView];发布于 2016-02-19 23:59:13
你的问题是
[self addSubview:querySearchBar];如果您将searchcontroller添加到子视图,则当您执行这些操作时,它将不起作用。
[searchController.searchBar removeFromSuperview()]
self.definesPresentationContext = true
searchController.active = false我建议你做
presentViewController(searchController, animated: true, completion: nil)然后试着打发searchController
[searchController.searchBar removeFromSuperview()]发布于 2012-05-08 07:52:13
试一试
[searchbar removefromsuperview];https://stackoverflow.com/questions/10490274
复制相似问题