class MyView < UIVIewController
...
# set gesture to close
def viewDidAppear(animated)
recognizer = UITapGestureRecognizer.alloc.initWithTarget(self, action: 'handleTapBehind:')
recognizer.setNumberOfTapsRequired(1)
recognizer.cancelsTouchesInView = false
self.view.window.addGestureRecognizer(recognizer)
end
# handle tap
def handleTapBehind(sender)
if sender.state == UIGestureRecognizerStateEnded
location = sender.locationInView(nil)
unless self.view.pointInside(self.view.convertPoint(location, fromView: self.view.window), withEvent: nil)
self.view.window.removeGestureRecognizer(sender)
self.dismissViewControllerAnimated(true, completion: lambda{})
end
end
end
end