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) 
+0

这可能需要tapGesture.delegate = self?或预防手势冲突,此委托方法扩展视图控制器:UIGestureRecognizerDelegate { FUNC gestureRecognizer(_ gestureRecognizer:UIGestureRecognizer,shouldRecognizeSimultaneouslyWith otherGestureRecognizer:UIGestureRecognizer) - >布尔{ 还真 } },也许.isUserInteractionEnabled自定义视图 – Lito

+0

如果隐藏视图,手势将不起作用,将“隐藏”设置为“假”,尝试一下。 – AshokPolu

+0

@AshokKumarReddyPolu我在viewDidLoad上做了viewDidAppear self.remedyMenuView?.isHidden = false在xib中的RemedyMenu中启用了用户交互。 – Homam

我有同样的问题与手势自定义视图它放置在标题视图,它看起来就像是在Xcode 9或东西titleview的改变IOS 11即拍,无论是一个错误内于titleview的大小为0,0,我解决它通过重写我的自定义视图的intrinsicContentSize财产,你的情况“remedyMenuView”像这样

override var intrinsicContentSize: CGSize { 
     return CGSize(width: 150, height: 36) 
    } 

好运。

+2

这对我来说是诀窍。 – ngobw

+0

这工作对我来说 – iori24

+1

我浪费了五个小时为此,这解决了我的问题 –