前言:還是那個圖片瀏覽的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。