2013-09-23 36 views
5

Nếu tôi có scrollView với chế độ xem phụ và chế độ xem phụ có trình nhận dạng cử chỉ di chuyển, thì cử chỉ di chuyển của chế độ xem cuộn của chế độ xem cuộn xuống. Những gì tôi muốn là ngược lại, tôi nghĩ, vì vậy đó là tôi kéo một subview nó sẽ xoay trong khung nhìn cuộn, nhưng nếu tôi chạm vào một khu vực khác xem di chuyển sẽ pan như bình thường. Có cách nào dễ dàng để thiết lập điều đó không?UIScrollView ghi đè nhận dạng cử chỉ pan của tiểu sử của tôi

Trả lời

12

Đây là những gì làm việc cho tôi:

UIPanGestureRecognizer *subviewPanRecognizer = [[UIPanGestureRecognizer alloc] 
    initWithTarget:self action:@selector(panSubview:)]; 
[subview addGestureRecognizer:subviewPanRecognizer]; 

// play nice with subview's pan gesture 
[scrollView.panGestureRecognizer 
    requireGestureRecognizerToFail:subviewPanRecognizer]; 
+0

Điều đó có vẻ là hành vi mặc định (đó là những gì tôi đang quan sát trong thực tế trong UIScrollView với chế độ xem phụ UIImageView). Ai đó có thể xác nhận/không? – Norswap

+1

nó không hoạt động đối với tôi –

+0

Hoạt động đẹp, đặc biệt khi áp dụng một đại biểu trên subview và thực hiện 'gestureRecognizerShouldBegin:'. –

0

Ghi đè lên hai đại biểu này dưới đây,

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ 
return YES; 

}

này sẽ cho phép bạn nhận ra cả những cử chỉ, sự trở lại mặc định là NO, vì vậy chúng tôi cần ghi đè lên và trả lại .

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ 
if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) { 
    if ([otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) { 
     return NO; 
    }else{ 
     return YES; 
    } 
} 
return YES; 

}

Trong đại biểu này, bạn có thể làm bất cứ điều gì như bạn muốn, vì nó là tên gestureRecoginzer sẽ phải thất bại bởi otherGestureRecognizer, tất cả các bạn cần làm là để đánh giá những gì loại hai cử chỉ này và trả lại CÓ hoặc KHÔNG.

Các vấn đề liên quan