出现UISearchController搜索栏但不工作/触发

时间:2017-04-12 01:49:07

标签: ios objective-c uisearchbar

在我的视图控制器中,我以编程方式添加一个搜索栏,它看起来就像我想要的那样但当我点击它时什么都不做我无法在搜索栏上写/输入任何内容,并且日志中没有错误。 我在另一个视图控制器中以相同的方式添加了搜索栏,它确实有效,但在那个特定的情况下它不起作用。我正在从前一个视图控制器推动这个视图控制器,所以它左侧有一个导航后退按钮(检查图像),它也可以工作。

在视图控制器中有一个TableView和一个CollectionView我想添加对表视图的搜索。我想知道在同一个视图控制器中是否有任何关系。

添加搜索栏的代码

- (void)viewDidLoad {
   //other stuff on view controller
   [self setSearchView];
}

-(void)setSearchView{
    //searchController is added as a property on .h file 
    //and all the delegate are also added
    //@property (strong, nonatomic) UISearchController *searchController;

    self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
    self.searchController.searchResultsUpdater= self;
    self.searchController.dimsBackgroundDuringPresentation = NO;
    self.searchController.searchBar.delegate = self;
    self.navigationController.toolbarHidden=YES;

    self.navigationItem.titleView=self.searchController.searchBar;

    self.searchController.hidesNavigationBarDuringPresentation = NO;
    self.definesPresentationContext = YES;
}

我从前一个视图控制器来到这个视图控制器,并在单击一个按钮时按下该视图控制器。我正在使用nib文件
按钮动作

- (void)ButtonClicked {
   MYNextViewController *nextViewController = [[MYNextViewController alloc] initWithNibName:@"MYNibFileName" bundle:nil];

    // I also have a tab bar on the bottom which i am hiding for that view controller when pushing
    nextViewController .hidesBottomBarWhenPushed=YES;

    [self.navigationController pushViewController:nextViewController  animated:YES];
}

图像:
enter image description here

任何帮助将不胜感激。希望我清楚自己......

4 个答案:

答案 0 :(得分:2)

最后,由于@ Tj3n,我能够通过视图层次结构的一些变化来解决这个问题,但不确定这是否是正确的解决方案,但现在它正在工作.. 我还必须删除此行并为其他目的添加更多代码

self.definesPresentationContext = YES; //removed...

that问题的回答也很有帮助

答案 1 :(得分:0)

//请使用此代码

  _searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.bounds.size.width, self.navigationController.navigationBar.bounds.size.height)];
_searchBar.tintColor = [UIColor blueColor];

//[_searchBar setImage:[UIImage imageNamed:@"cross_icon"] forSearchBarIcon:UISearchBarIconBookmark state:UIControlStateNormal];
_searchBar.placeholder = @"Enter drug name";
//_searchBar.showsBookmarkButton = YES;
_searchBar.barTintColor = [UIColor clearColor];

UITextField *txfSearchField = [_searchBar valueForKey:@"_searchField"];
txfSearchField.backgroundColor = [UIColor whiteColor];
txfSearchField.tintColor = [UIColor blackColor];
txfSearchField.textColor = [UIColor blackColor];
_searchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
_searchBar.delegate = self;
_searchBar.showsCancelButton = NO;
[_searchBar becomeFirstResponder];
[self.navigationController.navigationBar addSubview:_searchBar];

答案 2 :(得分:0)

我有一个类似的问题,并在这里尝试了答案,但对我没有用。然后偶然发现了该帖子https://forums.developer.apple.com/thread/122972

基本上,对我来说,禁用“自动同步粘贴板”有效。 (模拟器->编辑->自动同步粘贴板)

答案 3 :(得分:0)

对于您的特定情况,请使用它。

 self.searchController.obscuresBackgroundDuringPresentation = NO;

这将允许您使用同一表视图与搜索结果进行交互。