2015-09-09 1 views
-1

Добрый день, у меня UIImageView внутри UIView, и я хочу обрабатывать событие, когда пользователь нажимает на фон UIView, но не на UIImageView. Как я могу это достичь? Я читал о UITapGestureRecognizer, но это немного смущает меня.Аппликатор касания вокруг UIImageView

P.S. Если u может ответить plz в быстром.

ответ

1

Если вы хотите отключить 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) 
} 
0

Добавьте эту строку для своего изображения, потому что пользовательское взаимодействие UIImageView по умолчанию отключено. Если вы включите UIImageView userinteraction, то он не будет работать для UIView и вне UIImageView он будет работать

yourImage.userInteractionEnabled = YES; 

Попробуйте это ваш кран щелкнул будет работать

+0

Я пробовал, это не помогло. переопределение FUNC viewDidLoad() { self.view.addGestureRecognizer (UITapGestureRecognizer (цель: самостоятельно, действие: "tapDetected:")) imgView.userInteractionEnabled = истинная } + FUNC tapDetected (отправитель: UITapGestureRecognizer) { самостоятельно .dismissViewControllerAnimated (false, completion: noil) } –

+0

Определили ли вы количество нажатий и коснулись требуемых, а также включили User Inter. на вид вы хотите быть осязаемым? Но в основном вы должны быть в состоянии достичь этого (Obj-C - Извините, не стремительный, но должен дать вам основную идею) 'UITapGestureRecognizer * singleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector (handleTap)]; singleTap.numberOfTapsRequired = 2; singleTap.numberOfTouchesRequired = 1; [_view addGestureRecognizer: singleTap]; ' –

 Смежные вопросы

  • Нет связанных вопросов^_^