Objectiv-C 为UIImageView,UILabel等默认没有交互的控件添加点击事件
在OC的UI中,一些常用的控件如UIImageView,UILabel等默认是没有交互的,就是在控件上点击,双击或者滑动等操作是没有效果的。
下面的方法较为完美的解决了控件的交互问题:
(以UIImageView为例,其他控件类似)
首先,创建一个UIImageView:
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)]; //设置imageView图片 [imageView setImage:[UIImage imageNamed:@"first.jpg"]]; //设置imageView的userInteractionEnabled为YES,即开启交互 imageView.userInteractionEnabled = YES;
然后,创建一个手势,这里以单击手势为例:
//创建单击手势tap,并指定处理方法为SingleClick UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(SingleClick:)];
第三步,为imageView添加手势
[imageView addGestureRecognizer:tap];
最后,实现单击方法SingleClick
- (void)SingleClick:(UITapGestureRecognizer *)tap { //通过手势tap获取到单击的View UIImageView *imageView = (UIImageView *)[tap view]; //下面就可以对单击的View进行操作了 //注意:强转类型时要确保正确,什么类型控件添加了手势tap,转型就是什么类型 }
转载请注明:作者SmithJackyson