Если вы хотите отключить UITapGestureRecognizer
на представлении ребенка ваш главный вид, то вы должны включить взаимодействия с пользователем из ваших UIImageView
как этот
imgTest.userInteractionEnabled = true;
, то вы должны установить делегат вашего UITapGestureRecognizer
обнаружить UITouch
из представления, установите делегат как этот
let touch = (UITapGestureRecognizer(target: self, action: "tapDetected:"))
touch.delegate = self
self.view.addGestureRecognizer(touch)
Тогда вы должны реализовать метод Делегат UITapGestureRecognizer
, в котором вы будете обнаруживать вид, который в настоящее время прикасался как этот
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
if touch.valueForKey("view")!.isKindOfClass(UIImageView) {
return false
} else {
return true
}
}
В вышеприведенном кода у меня есть отключить водопроводную жест на UIImageView
Теперь этот метод будет работать только для не self.view
для UIImageView
func tapDetected(sender: UITapGestureRecognizer) {
self.dismissViewControllerAnimated(false, completion: nil)
}
Я пробовал, это не помогло. переопределение FUNC viewDidLoad() { self.view.addGestureRecognizer (UITapGestureRecognizer (цель: самостоятельно, действие: "tapDetected:")) imgView.userInteractionEnabled = истинная } + FUNC tapDetected (отправитель: UITapGestureRecognizer) { самостоятельно .dismissViewControllerAnimated (false, completion: noil) } –
Определили ли вы количество нажатий и коснулись требуемых, а также включили User Inter. на вид вы хотите быть осязаемым? Но в основном вы должны быть в состоянии достичь этого (Obj-C - Извините, не стремительный, но должен дать вам основную идею) 'UITapGestureRecognizer * singleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector (handleTap)]; singleTap.numberOfTapsRequired = 2; singleTap.numberOfTouchesRequired = 1; [_view addGestureRecognizer: singleTap]; ' –