2017-09-01 2 views
4

Der folgende Code funktioniert gut in iOS 10 und darunter. Ich habe vor kurzem Xcode 9.0 Beta 5 installiert und iOS 11 Beta 7 auf dem iPad Air zum Testen installiert. Jetzt wird die replaceMenuTapped-Methode nicht ausgeführt.UITapGestureRecognizer auf navigationItem.titleView funktioniert nicht auf 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

Es ist möglich erfordern tapGesture.delegate = selbst? oder für Gesten Konflikte zu vermeiden, diese Delegatmethode Erweiterung Viewcontroller: UIGestureRecognizerDelegate { func GestureRecognizer (_ GestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { return true } } oder .isUserInteractionEnabled vielleicht auf benutzerdefinierten Ansicht – Lito

+0

Geste funktioniert nicht, wenn Sie eine Ansicht ausblenden, isHidden auf "false" setzen, versuchen Sie es. – AshokPolu

+0

@AshokKumarReddyPolu Das mache ich auf viewDidLoad dann auf viewDidAppear self.remedyMenuView? .isHidden = false Und Benutzerinteraktion ist in RemedyMenu in Xib aktiviert. – Homam

Antwort

18

Ich hatte das gleiche Problem mit einer benutzerdefinierten Ansicht mit einer Geste auf mich in der Titelansicht platziert, es sieht aus wie ein Bug mit Xcode 9 oder etwas in Titleview ist für ios 11, der macht, dass, was auch immer verändert ist innerhalb der Titleview mit einer Größe von 0, 0, löste ich es die intrinsicContentSize Eigenschaft meiner benutzerdefinierten Ansicht durch zwingende, wie so

in Ihrem Fall „remedyMenuView“
override var intrinsicContentSize: CGSize { 
     return CGSize(width: 150, height: 36) 
    } 

viel Glück.

+2

Das hat den Trick für mich gemacht. – ngobw

+0

das funktionierte für mich – iori24

+1

Ich verschwendete fünf Stunden dafür, das löste mein Problem –

Verwandte Themen