前言:还是那个图片浏览的demo,利用UIScrollView实现图片的分页显示,现在希望点击每一张图片,都可以跳转到另一个专门对图片进行放大缩小的controller.
面临的问题是:UIScrollView作为一个如此常用的控件,查看UIScrollViewDelegate,只有滑动响应,竟然没有响应点击事件的方法!那么,就只有自己写点击事件了。
事件的具体操作好写,关键是如何把点击事件传进来?有两种方法:一、用现成的协议 二、自己新定义一个协议。
这里,我们介绍第一种方法,
协议@protocol UIGestureRecognizerDelegate <NSObject> 类UITapGestureRecognizer
具体实现如下:
//对srcollView添加点击响应 UITapGestureRecognizer *sigleTapRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTapGesture:)]; sigleTapRecognizer.numberOfTapsRequired = 1; [_srcollView addGestureRecognizer:sigleTapRecognizer];
点击后的响应:
-(void)handleTapGesture:( UITapGestureRecognizer *)tapRecognizer { int tapCount = tapRecognizer.numberOfTapsRequired; // 先取消任何操作???????这句话存在的意义??? [NSObject cancelPreviousPerformRequestsWithTarget:self]; switch (tapCount){ case 1: [self performSelector:@selector(handleSingleTap) withObject:nil afterDelay:0.22]; break; // case 2: // [self handleDoubleTap:tapRecognizer]; break; } }
针对不同点击(单击、双击)的具体操作:这个自己根据自己的情况来写。
关于不使用UIGestureRecognizerDelegate,完全由自己写,可参考http://www.cnblogs.com/neozhu/archive/2012/03/30/2425224.html,但是我没有验证过,不知道可不可行。
如果要直接判断收拾方向之类的,比如向左或向右轻扫,可以使用UISwipeGestureRecognizer类。可参考http://o0o0o0o.iteye.com/blog/875333。