2012-10-13 32 views
8

gestureRecognizer: shouldReceiveTouch: phương thức không được gọi. Tôi đã cài đặt nó không đúng cách chưa?gestureRecognizer: shouldReceiveTouch: không nhận được gọi là

-(id) init 
{ 
UILongPressGestureRecognizer *touchHold = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleTouchHold:)]; 
touchHold.minimumPressDuration = 1.0f; 
touchHold.numberOfTouchesRequired = 1; 
[[CCDirector sharedDirector].openGLView addGestureRecognizer:touchHold]; 
} 

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    return NO; 
} 

Phương thức bấm và giữ vẫn được gọi ngay cả khi tôi đặt bool thành không.

Trả lời

26

Có vẻ như bạn chưa đặt đại biểu?

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 

Là một phần của UIGestureRecognizerDelegate. Vì vậy, bạn nên đã thiết lập các đại biểu quá.

touchHold.delegate = self; 

Chỉnh sửa: Bạn nên yêu cầu trình điều khiển chế độ xem của mình triển khai UIGestureRecognizerDelegate. Một cái gì đó như

@interface YourViewController <UIGestureRecognizerDelegate> 
+0

'Gán để 'id ' từ loại không tương thích 'HelloWorldLayer *' ' – iamruskie

+1

Bạn có trên @ interface của bạn YourViewController <...> – ewiinnnnn

+0

ah tôi đã có' @ interface YourViewController {id < UIGestureRecognizer> delegate;} 'và đã thiết lập' touchHold.delegate = delegate; 'Cảm ơn sự giúp đỡ của bạn, hoạt động ngay bây giờ. Đã bị nhầm lẫn ở đó trong một giây. – iamruskie

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