- 一個Root View,上頭一個ImageView及兩個縮圖(UIButton實作),按了縮圖後,ImageView會顯示此縮圖的原圖
- 點一下畫面,會出現此圖的說明
嗯~基本上不難,直接針對這個View實作touch event也ok,不過我要的是用UITapGestureRecognize,但這會有個問題,針對Root View去加入UITapGestureRecognize後,連同Button的touch event都被劫走了,那時以為除了一個個都實作成class後再加上touch實作才行,說穿了
我的狀況是“在一個複雜的View之中,想在View上直接觸點一下,就能執行我要的效果,但原本在上頭的Button一樣要正常運作”
以下就以這個樣一段需求來實作。
我的狀況是“在一個複雜的View之中,想在View上直接觸點一下,就能執行我要的效果,但原本在上頭的Button一樣要正常運作”
以下就以這個樣一段需求來實作。
Step 1. 加入UITapGestureRecognize,記得要在class加入UIGestureRecognizerDelegate
- (void)viewDidLoad
{
[super viewDidLoad];
//加入單點觸發
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapScreenShot:)];
[self addGestureRecognizer:tapGesture];
tapGesture.delegate = self;
}
Step 2. 寫好要要觸發的function,這邊單純印出字串
- (void)singleTapScreenShot:(UITapGestureRecognizer *)gestureRecognizer
{
NSLog(@"Tap In");
}
Step 3. 加入觸發後,辨別UIGestureRecognizer是否要觸發,在這我是return NO,讓Button的touch能被取得
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[UIButton class]]) {
return NO;
}
return YES;
}
touch.view這邊可以自行改成要比對的object,這樣就可以很容易的實作出來了
沒有留言:
張貼留言