我们自定义了导航控制器的leftItem后导致系统的右滑返回手势失效,其原因是系统的返回手势代理对象被置空了, 然后我通过重新设置返回手势的代理后(这点网上很多人介绍过,不谈了), 右滑返回手势有效了, 但是如果右滑到一半取消, 导航栏上标题就会出现三个小点 "..."
我的解决方案: 通过查看图层结构,找到这三个小点对应的控件, 设置为隐藏;
代码很简单(本文后面更新了更简单的解决方法):
//在viewController中:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
guard let subviews = navigationController?.navigationBar.subviews else {
return
}
for view in subviews {
if view.isKindOfClass(NSClassFromString("UINavigationItemButtonView")!) {
view.hidden = true
}}}
本文发布一个月后又发现了更好的解决方法,代码如下:(上面那种解决方案的代码全部不需要了, 只需要重写navgationbar的这个方法就可以了)
extension UINavigationBar {
//解决导航栏滑动返回时出现三个小白点的BUG:
public override func addSubview(view: UIView) {
super.addSubview(view)
if NSClassFromString("UINavigationItemButtonView") != nil {
if view.isKindOfClass(NSClassFromString("UINavigationItemButtonView")!) {
view.hidden = true}
}}}