2015-09-09 42 views
-1

好日子,我UIImageView里面UIView和我想处理事件,当用户点击UIView背景,但不是在UIImageView。我怎样才能实现它?我读过关于UITapGestureRecognizer的内容,但它让我有点困惑。点击UIImageView周围的识别器

P.S.如果你能迅速回答。

回答

1

如果你想上的子视图禁用UITapGestureRecognizer你的主视图,那么你必须让这样的

imgTest.userInteractionEnabled = true; 

UIImageView的用户交互,那么你必须设置你UITapGestureRecognizer的委托检测视图3210,设置委托这样

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

为您的imageView添加此行,因为UIImageView默认的用户交互被禁用。如果您将启用的UIImageView用户交互,那么它不会为你的UIView工作和UIImageView的以外,将工作

yourImage.userInteractionEnabled = YES; 

试试这个水龙头点击将工作

+0

我试过了,没有帮助。 倍率FUNC viewDidLoad中(){ self.view.addGestureRecognizer(UITapGestureRecognizer(目标:自,动作: “tapDetected:”)) imgView.userInteractionEnabled =真 } + FUNC tapDetected(发件人:UITapGestureRecognizer){ 自.dismissViewControllerAnimated(false,completion:nil) } –

+0

您是否定义了水龙头的数量,并且需要触摸并且还启用了用户界面。在你想要触摸的视图上?但基本上你应该可以通过(Obj-C - 对不起,没有快捷,但应该给你主要想法) 'UITapGestureRecognizer * singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap)]; singleTap.numberOfTapsRequired = 2; singleTap.numberOfTouchesRequired = 1; [_view addGestureRecognizer:singleTap];' –