标签: uisearchcontroller

UISearchController 与 UITableView?

我希望在我的 ViewController 上创建一个 UISearchController,其中包含一个 UITableView(不是 UITableViewController)。我有 2 个警告和一个崩溃,不确定它们是否相关 - 但要知道我的问题之一是警告

'Imcompatiable pointers types sending UITableView to parameter of type UIViewController.'
Run Code Online (Sandbox Code Playgroud)

显然,这是因为我试图将 searchResultsController 设置为我的 UIViewController 上的 tableView,而不是像这样的 UITableViewController:

   self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.myTableView];
Run Code Online (Sandbox Code Playgroud)

self.myTableView 是 UITableView,我将如何解决这个问题?我是否必须将我的 tableView 转换为 UITableViewController 才能使其正常工作?提前致谢。

iphone objective-c uitableview ios uisearchcontroller

4
推荐指数
1
解决办法
2495
查看次数

在没有动画的情况下在UISearchController上强制结束编辑

当我弹出当前的ViewController时,我想从用户界面中删除searchBar。现在,我这样做:

 override func viewWillDisappear(animated: Bool) {
  resultSearchController.active = false //Need improvement here. remove animation
  super.viewWillDisappear(animated)
}
Run Code Online (Sandbox Code Playgroud)

这里发生的是UISearchController被关闭了,但是带有动画...而且在当前状态下看起来非常糟糕。我希望它回到没有动画的初始状态,然后viewController消失并带有自己的动画。

animation ios swift uisearchcontroller

4
推荐指数
1
解决办法
1356
查看次数

UISearchController的UITableView顶部有额外的空间

我设置了这样一个UISearchController:

    searchResultsController = SearchResultsController()

    searchController = UISearchController(searchResultsController: searchResultsController)
    searchController.searchResultsUpdater = self
    searchController.hidesNavigationBarDuringPresentation = false
    searchController.dimsBackgroundDuringPresentation = true
    searchController.searchBar.searchBarStyle = .minimal
    searchController.delegate = self
    definesPresentationContext = true

    navigationItem.titleView = searchController.searchBar
Run Code Online (Sandbox Code Playgroud)

SearchResultsController只是一个UITableView用于显示搜索结果的视图控制器.

当设备处于纵向状态时,开始在纵向模式下搜索,表视图顶部有一个额外的空间(RESULT标题是表视图的开头)

设备纵向 - 以纵向开始搜索

然后,如果我旋转到横向模式,空间消失:

横向设备 - 以纵向开始搜索

当设备处于横向模式并且我开始搜索时,表格视图被切断:

横向设备 - 开始横向搜索

然后如果我旋转到肖像,表视图完全适合:

设备纵向 - 开始横向搜索

额外的空间高度与状态栏高度完全相同.所以我想知道这里有一些与状态栏有关的东西.

如果我将搜索栏指定为表视图,则不会发生这种情况tableHeaderView.只有当搜索栏在导航标题中时才会发生.谁知道为什么?

uisearchbar ios uisearchcontroller

4
推荐指数
1
解决办法
1871
查看次数

UISearchController 搜索栏文本在失去焦点时消失

我在 UITableView 的标题中使用 UISearchController 的 UISearchBar。我的搜索工作正常,因为当我在搜索栏的字段中输入一些文本时,所有相关方法都会被调用,并且表格视图会按预期显示正确的搜索结果。

当我想利用其中一个结果对其进行处理时,问题就出现了。一旦我点击表视图单元格之一,搜索栏中的字段就会变为空。由于搜索文本现在是空的,搜索结果被更新,表格视图重新加载零结果。所以点击表格单元格什么也不做,因为表格单元格不再存在。

我可以通过更新我的updateSearchResultsForSearchController:方法在搜索字符串为空时不更新搜索结果来解决大部分问题。这工作正常。但无论如何,我仍然希望搜索文本保留在搜索字段中,这是我问题的关键......

为什么我的搜索文本从搜索字段中消失了,当我点击其他地方时,如何防止搜索字段变空?

这是我设置搜索栏和搜索控制器的方法:

- (void)viewDidLoad {
    [super viewDidLoad];

    searcher = [[UISearchController alloc] initWithSearchResultsController:nil];
    searcher.searchResultsUpdater = self;
    searcher.delegate = self;
    searcher.definesPresentationContext = YES;
    resultsTable.tableHeaderView = searcher.searchBar;
Run Code Online (Sandbox Code Playgroud)

编辑:我注意到当搜索栏有焦点时表格视图单元格变暗。所以我认为搜索控制器正在捕获所有触摸,并且可能将它们作为“取消”操作来处理。如果是这样,我该如何阻止它以这种方式取消?

objective-c ios uisearchcontroller

4
推荐指数
1
解决办法
1618
查看次数

UISearchController:searchResultsController 不显示

我对 UISearchController 很陌生,所以如果这是一个愚蠢的问题,请原谅。

我尝试关注这个问题,但无法得到我想要的结果。

在我的中,MapViewController's viewDidLoad我像这样初始化搜索控制器:

searchController = UISearchController(searchResultsController: customViewController)

其中 customViewController 是 UIViewController 的子类,现在有一些文本标签(通过界面构建​​器)。(我这样声明:let customViewController = MyCustomeViewController()

我试图通过隐藏和取消隐藏委托方法中的searchResultsControllerwith来遵循上述链接searchController.searchResultsController?.view.isHidden = false,但没有运气。

结果是一样的:只有视图变暗。

理想情况下,我希望它类似于 Facebook 的应用程序,当您点击搜索栏时,它会显示不同的视图。

searchResultsController在委托中打印了对象,willPresentSearchController它确实将其指示为MyCustomViewController.

我在这里遗漏了什么还是这不是正确的方法?

在此处输入图片说明

ios swift uisearchcontroller

4
推荐指数
1
解决办法
848
查看次数

顶部安全区域约束动画

设置

  1. 一个简单的视图控制器,在导航项中设置了 UISearchController 以在搜索栏中使用 iOS 11 的搜索功能。

  2. 任何具有顶部约束的视图 SafeArea.Top

问题

当呈现搜索控制器时,导航栏因为它的大小变化而被动画化,但对顶部区域的约束不遵循动画。

如果有人知道我能做什么(现在我想我唯一的选择是禁用hidesNavigationBarDuringPresentation以避免动画)

请参阅下面的示例,其中我激活了慢速动画以便于理解:

在此处输入图片说明

uinavigationitem uisearchcontroller ios11

4
推荐指数
1
解决办法
715
查看次数

导航栏中的灰色背景,在推送期间将 searchController 添加到导航项

我在导航控制器中有一个表视图,以便我可以将详细视图控制器推送到堆栈上。它工作正常,直到我向导航项添加搜索控制器,如下所示:

searchController = UISearchController(searchResultsController: nil)
searchController.obscuresBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = false
searchController.searchBar.delegate = self
searchController.searchBar.tintColor = Colors.mlLabel
navigationItem.searchController = searchController
definesPresentationContext = true
Run Code Online (Sandbox Code Playgroud)

它导致临时灰色背景,见下文:

在此处输入图片说明

在调试视图层次结构时,看起来UIViewControllerWrapperView's _UIParallaxDimmingView(在下面选择)是导致这种情况的原因,因为导航栏和状态栏都是透明的。

在此处输入图片说明

我怎样才能解决这个问题?

注意:animated属性设置pushViewController()false有效,但我想保留动画。

更新:这似乎只在 iOS 13 上有问题。甚至可能来自最近的某个版本,因为我之前没有这个问题。

更新 2:我现在在我的应用程序中的多个地方都注意到了同样的问题,而且它不仅仅是与SearchController. 基本上_UIParallaxDimmingView它的鼻子伸出来。

uinavigationbar uinavigationcontroller pushviewcontroller ios uisearchcontroller

4
推荐指数
1
解决办法
841
查看次数

UISearchController dimsBackgroundDuringPresentation 已弃用

我看到dimsBackgroundDuringPresentationiOS SDK 12 现在已弃用。此属性的替代品是什么?

ios swift uisearchcontroller

4
推荐指数
1
解决办法
422
查看次数

IOS8 UISearchController直接显示搜索栏

我正在尝试使用UISearchController为我的iphone应用程序显示一个简单的搜索屏幕.我使用了UITableViewControllerUISearchController,它嵌入在UINavigationController中

  • 这让我看到以下屏幕(状态1)

带导航栏的searchcontroller

  • 当用户点击搜索字段时,我会看到下面的屏幕(状态2):搜索栏在状态栏下方的屏幕顶部显示.

searchcontroller已激活

我想做的是直接获得状态2而不进入状态1

我试图添加此代码

presentViewController(searchController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

但它要么不显示搜索栏,如果动画是假的,或者显示它我想要但是在不必要的过渡后暂时显示导航栏

uinavigationcontroller ios uisearchcontroller

3
推荐指数
1
解决办法
2560
查看次数

搜索文本字段在iOS 11上的搜索栏中错误放置

我正在使用UISearchController作为导航栏的一部分,使用iOS 11中引入的新API.我在ViewController的viewDidLoad中以下列方式使用它

- (void)viewDidLoad {  
    [super viewDidLoad];  
    [_table setDataSource:self];  
    [_table setDelegate:self];  
    searchController = [[UISearchController alloc] initWithSearchResultsController:nil];  
    [self.navigationItem setSearchController:searchController];  
    [self.navigationItem setHidesSearchBarWhenScrolling:NO];  
    [searchController.searchBar setBackgroundColor:[UIColor greenColor]];  
} 
Run Code Online (Sandbox Code Playgroud)

但是,搜索文本字段将呈现在搜索栏内的错误位置.请看下面的截图.

https://imgur.com/a/Igf49

我检查了视图层次结构,发现搜索栏中的UISearchBarTextField对象(不能直接访问devs)的frame.y值为1,这可能导致此问题.我已经在iOS 11 beta 10和iOS 11 GM上测试了这个.

这是一个已知的问题?有没有解决这个问题?或者是我在我身上做错了什么?

任何帮助将不胜感激 (:

objective-c uinavigationitem ios uisearchcontroller ios11

3
推荐指数
1
解决办法
2135
查看次数