navigationItem.titleView上的UITapGestureRecognizer无法在iOS上工作11
问题描述:
下面的代码在iOS 10及更低版本中工作正常。我最近安装了Xcode 9.0 beta 5并在iPad Air上安装了iOS 11 beta 7进行测试。现在,remedyMenuTapped方法不会被执行。navigationItem.titleView上的UITapGestureRecognizer无法在iOS上工作11
self.remedyMenuView = Bundle.main.loadNibNamed("RemedyMenu", owner: self, options: nil)![0] as? RemedyMenu
self.remedyMenuView?.isHidden = true
self.navigationItem.titleView = remedyMenuView;
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(RemedyDetailVC.remedyMenuTapped(_:)))
self.remedyMenuView?.addGestureRecognizer(tapGesture)
答
我有同样的问题与手势自定义视图它放置在标题视图,它看起来就像是在Xcode 9或东西titleview的改变IOS 11即拍,无论是一个错误内于titleview的大小为0,0,我解决它通过重写我的自定义视图的intrinsicContentSize财产,你的情况“remedyMenuView”像这样
override var intrinsicContentSize: CGSize {
return CGSize(width: 150, height: 36)
}
好运。
这可能需要tapGesture.delegate = self?或预防手势冲突,此委托方法扩展视图控制器:UIGestureRecognizerDelegate { FUNC gestureRecognizer(_ gestureRecognizer:UIGestureRecognizer,shouldRecognizeSimultaneouslyWith otherGestureRecognizer:UIGestureRecognizer) - >布尔{ 还真 } },也许.isUserInteractionEnabled自定义视图 – Lito
如果隐藏视图,手势将不起作用,将“隐藏”设置为“假”,尝试一下。 – AshokPolu
@AshokKumarReddyPolu我在viewDidLoad上做了viewDidAppear self.remedyMenuView?.isHidden = false在xib中的RemedyMenu中启用了用户交互。 – Homam