Forwarding UIGesture to views behind

后端 未结 5 1348
长情又很酷
长情又很酷 2020-11-29 20:21

I am working on an iphone (iOS 4.0 or later) app and having some troubles with touch handling between multiple views. I am having a view structure like this

         


        
5条回答
  •  醉梦人生
    2020-11-29 20:48

    If i undestand your problem correct, you may just add another, clear view with rect, same as you A and B view, and implement all gesture on it: when you do pinch gesture, control subView A, when swipe and tap (single and double) gestures - control subView B. You can do it different ways: via pointers or just sending recived gesture to method in class, wich controls your sub view.

    for example:

    UISwipeGestureRecognizer *leftSwipe  =  [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(leftSwipe:)];
    [leftSwipe setDirection:(UISwipeGestureRecognizerDirectionLeft)];
    leftSwipe.delegate  =   subViewAcontroller;
    [clearView addGestureRecognizer:leftSwipe];
    [leftSwipe release];
    
    UISwipeGestureRecognizer *rightSwipe  =  [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(rightSwipe:)];
    [rightSwipe setDirection:(UISwipeGestureRecognizerDirectionRight)];
    rightSwipe.delegate   =   subViewAcontroller;
    [clearView addGestureRecognizer:rightSwipe];
    [rightSwipe release];
    
    UIPinchGestureRecognizer *pinch   =  [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(handlePinch:)];
    pinch.delegate    =   subViewBcontroller;
    [clearView addGestureRecognizer:pinch];
    [pinch release];
    

    or:

    - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
        if ([gestureRecognizer isKindOfClass:[UIPinchGestureRecognizer class]]) {
            NSLog(@"pinchGesture");
            [subViewBcontroller solvePinchGesture: gestureRecognizer];
        }
    //etc
        return YES;
    }
    

提交回复
热议问题