2010-07-15 34 views
5

Bạn có thể ghi đè lên -handlePan: trong lớp con UIScrollView không? tức là ứng dụng của tôi sẽ không bị từ chối khỏi cửa hàng ứng dụng?Overriding -handlePan: trong UIScrollView

Cảm ơn bạn đã chia sẻ quan điểm của mình.

Chỉnh sửa: điều gì về gọi -handlePan: trong một phương thức khác của phân lớp của tôi?

Trả lời

8

Trong trường hợp bất kỳ ai quan tâm, những gì tôi đã làm thay vì ghi đè đã tắt UIPanGestureRecognizer mặc định và thêm một phiên bản UIPanGestureRecognizer khác được ánh xạ tới trình xử lý tùy chỉnh của tôi.

Chỉnh sửa cho twerdster:

tôi đã làm nó như thế này

//disables the built-in pan gesture 
for (UIGestureRecognizer *gesture in scrollView.gestureRecognizers){ 
    if ([gesture isKindOfClass:[UIPanGestureRecognizer class]]){ 
    gesture.enabled = NO; 
    } 
} 

//add your own 
UIPanGestureRecognizer *myPan = [[UIPanGestureRecognizer alloc] init...]; 
//customize myPan here 
[scrollView addGestureRecognizer:myPan]; 
[myPan release]; 
+0

Bạn đã làm điều đó như thế nào? – twerdster

+0

Làm cách nào bạn vô hiệu hóa mặc định và cách bạn chỉ định hành vi mới sao cho nó phù hợp với hành vi cũ và thêm trình xử lý của riêng bạn? – twerdster

+1

@twerdster xem bài đăng cập nhật. – Altealice

4

Bạn có thể làm cho đoạn code thậm chí ngắn hơn.

//disables the built-in pan gesture 
scrollView.panGestureRecognizer.enabled = NO; 

//add your own 
UIPanGestureRecognizer *myPan = [[UIPanGestureRecognizer alloc] init...]; 
[scrollView addGestureRecognizer:myPan]; 
[myPan release]; 
+3

Thuộc tính panGestureRecognizer chỉ được thêm vào iOS 5. Tôi đã tạo mã ở trên cho iOS 3.2, vì vậy đó là cách duy nhất để làm điều đó sau đó. Mẹo hay, dù sao đi nữa. – Altealice