2017-09-01 91 views
4

下面的代碼在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

回答

18

我有同樣的問題與手勢自定義視圖它放置在標題視圖,它看起來就像是在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

我浪費了五個小時爲此,這解決了我的問題 –

相關問題