UIImageView关联响应方法

UIView类可以响应Touth事件,我们可以给UIView类关联触摸响应的方法,以UIImageView为例子,为UIImageView关联响应的方法

   // 创建一个imageView
     CGRect imageRect = CGRectMake(10, 10, width-20, width-20);
     UIimageView* imageView = [[UIImageView alloc]initWithFrame:imageRect];
        imageView.image = [UIImage imageNamed:imageUrl];
        imageView.layer.masksToBounds =YES;
        imageView.layer.cornerRadius =60;
    //添加关联的方法 shopTap:
      UITapGestureRecognizer *Tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(shopTap:)];
      Tap.numberOfTapsRequired = 1;//点击一次触发
      Tap.numberOfTouchesRequired = 1;//点击需要的手指数量
      [imageView addGestureRecognizer:Tap];

但是有时候发现添加了 gesture也不能响应方法,原因是:特殊子类的覆盖
userInteractionEnabled属性默认值为YES,但UIView的一些子类中对该属性进行了覆盖,并将其默认值设置为了NO,其中UIImageView和UILabel就是这样的类 。userInteractionEnabled属性在UIImageView和UILabel的文档中都有简单的描述。在实际的界面开发过程中,我们经常用UIImageView来模拟按钮或其它可以响应用户touch事件的显示区,并通过gesture来为其添加事件响应,因此为了保证事件能正常的接受,我们必须要显示的将UIImageView对象的userInteractionEnabled的值设为YES 。

[imageView setUserInteractionEnabled:YES];

然后就可以响应shopTap方法了

- (void)shopTap:(UITapGestureRecognizer *)tapGesture
{
    //do something

}

userInteractionEnabled属性介绍

http://my.oschina.net/hmj/blog/108002

UIView用户响应事件

http://blog.sina.com.cn/s/blog_6dce99b10101l0qd.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章