2016-08-09 57 views
2

Ich habe die folgende Ansicht:UIButton reagiert nicht auf Berührungen

enter image description here

Die Art und Weise aufzubauen ist

UIViewController -> UIView (unten Quadrat) -> UIViewController (wird geladen im unteren Feld)

Tastenbetätigungen in diesem UIViewController werden nicht ausgelöst. Allerdings sehe ich die Schaltfläche animieren, wenn ich im Simulator nach unten drücke.

Auch wenn ich die folgenden tap-Handler programmatisch an den runden UIImageView in diesem UIViewController hinzufügen antwortet er:

func handleTap(sender: UITapGestureRecognizer? = nil) { 
     print("tappable") 
    } 

let tap = UITapGestureRecognizer(target: self, action: #selector(NeighbourhoodViewController.handleTap(_:))) 
userPopupView.userImageView.userInteractionEnabled = true 
userPopupView.userImageView.addGestureRecognizer(tap) 

Wie kann ich fange Aktionen auf diesen Tasten? Dies funktioniert nicht:

@IBAction func test(sender: AnyObject) { 
     print("test") 
    } 

Die Linie btw zum UIButton in Interface Builder verbunden ist:

enter image description here

+0

Benutzerinteraktion auf der betreffenden Schaltfläche oder Ansicht aktiviert? – TheValyreanGroup

+0

Ja, Benutzerinteraktion aktiviert überall wo. Auf der UIView. Auf dem UIViewController. Auf dem UIButton. Der Knopf animiert auch (er wird hervorgehoben, wenn er gedrückt wird) und zeigt an, dass eine Berührung empfangen wurde. –

+0

Ist diese "Test" -Methode das einzige, was mit diesen Tastenausgängen verbunden ist? Werfen Sie einen Blick auf den Tab "Outlets" im IB, um zu bestätigen, dass keine Konflikte auftreten. – TheValyreanGroup

Antwort

1

ich die Lösung gefunden. Ich hatte gerade dies die Viewcontroller auf die Ansicht hinzuzufügen:

self.popupView.addSubview(userPopupView.view) 

Wenn es hätte sein sollen:

self.addChildViewController(userPopupView) 
self.popupView.addSubview(userPopupView.view) 
userPopupView.didMoveToParentViewController(self) 

Jetzt funktioniert es!

+1

Immer noch nicht richtig. Der Tanz ist: 'addChildViewController'; 'addSubview'; 'didMoveToParentViewController' - in dieser Reihenfolge. Mach das und kein anderes. Dafür gibt es strenge Regeln. – matt

+0

Danke matt! Ich habe meine Antwort angepasst. –