【问题标题】:How to hide scope buttons properly如何正确隐藏范围按钮
【发布时间】:2018-10-08 22:22:23
【问题描述】:

初始状态:

sb.showsScopeBar 设置为 false

searchBarShouldBeginEditing 使范围按钮在搜索栏被激活时出现:

func searchBarShouldBeginEditing(_ sb: UISearchBar) -> Bool {
        sb.setShowsCancelButton(true, animated: true)
        sb.scopeButtonTitles = scopeButtonTitles
}

点击取消按钮,正确隐藏范围按钮,我们回到原始状态。

注意这是默认行为,我们的 searchBarCancelButtonClicked 除了在必要时恢复之前的查询文本之外没有做任何事情。

现在是烦人的部分......

如果我放了

sb.setShowsCancelButton(false, animated: true)

在 searchBarShouldEndEditing 或 searchBarTextDidEndEditing 中,取消按钮消失但范围按钮只是缩小:

添加sb.scopeButtonTitles = nil 会使范围按钮消失,但搜索栏不会调整大小:

调用 sb.sizeToFit() 似乎没有任何帮助...使用 sb.showsScopeBar 完全破坏了搜索栏 UI。

【问题讨论】:

  • 这个可以附加项目吗?

标签: ios swift uisearchbar ios12


【解决方案1】:

找到了解决办法!

模拟按下取消按钮的行为(隐藏范围按钮并调整搜索栏的大小):

func searchBarTextDidEndEditing(_ sb: UISearchBar) {
    sb.setShowsCancelButton(false, animated: true)
    searchController?.isActive = false
}

我们不需要将 sb.scopeButtonTitles 设置为 nil。

【讨论】:

  • 也许把它放在searchBarSearchButtonClicked中更有意义
猜你喜欢
  • 2018-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
相关资源
最近更新 更多