2016-04-27 3 views
3

Ich versuche, einen View-Controller als popoverviewcontroller mit modalen Stil des Typs .pagesheet zu präsentieren. Hier versuche ich, einen Tap-Gesten-Erkenner hinzuzufügen, um diesen Popover-View-Controller beim Klicken außerhalb seiner Ansicht zu schließen. Aber es ist nicht 9. Hier in iOS tap Erkennung ist der Code unter dem GestenerkennerSo verwerfen Sie das Popover View Controller auf iPad beim Antippen außerhalb der Ansicht: IOS 9

override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 
     let recog : UITapGestureRecognizer = UITapGestureRecognizer.init(target: self, action:#selector(HandleTap)) 
     recog.numberOfTapsRequired = 1 
     recog.numberOfTouchesRequired = 1 
     recog.cancelsTouchesInView = false 
     recog.delegate = self 
     self.view.window?.addGestureRecognizer(recog) 

    } 


func HandleTap(sender:UITapGestureRecognizer) -> Void 
{ 
    if(sender.state == UIGestureRecognizerState.Ended) 
    { 
     var location : CGPoint = sender.locationInView(self.presentingViewController?.view) 
     //var location : CGPoint = sender.locationInView(self.view?.window) 
     if(!(self.view.pointInside(self.view.convertPoint(location, toView: self.view?.window), withEvent: nil))) 
     { 
      self.view.window?.removeGestureRecognizer(sender) 
      self.dismissViewControllerAnimated(true, completion: nil) 
     } 
    } 
} 

Antwort

1

Set userinteractionenable zu true auf view, auf das Sie den Hahn behandeln. und zweitens, warum machst du deine Sachen in viewDidAppear? Sie sollten viewDidLoad verwenden, um Gestenerkenner hinzuzufügen.

Update:

self.view.window?.userInteractionEnabled = true 

, wenn Sie Navigation-Controller verwenden dann

self.navigationController?.view.window?.userInteractionEnabled = true 

Hoffnung Thiw :)

+0

Anwenderwechsel ist bereits auf dem Blick durch .xib Datei aktiviert wird helfen. –

+0

Wenn Sie dem Fenster Gestenerkenner hinzufügen, sollten Sie Benutzerinteraktion auf Fenster aktivieren. von .xib können Sie nur für Ansicht aktivieren – Lion

+0

neue Lösung war auch keine Hilfe .. –

Verwandte Themen