2011-02-03 19 views
26

Xin chào Tôi có một cái nhìn opengl và trên đó tôi có một thanh tab. Tôi đang sử dụng trình nhận dạng chạm để chạm vào các đối tượng 3D khác nhau trên màn hình. Trong thanh tab, tôi có một nút nhưng nó không hoạt động vì bộ nhận dạng vòi cũng bắt được các vòi này. Làm cách nào để ngăn chặn điều này? Tôi đã thử điều này:Làm thế nào để bạn dừng UITapGestureRecognizer khỏi việc bắt MẤT CẢM?


- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if ([touch.view isKindOfClass:[UIBarButtonItem class]]) return FALSE; 
    return TRUE; 
} 

Tôi nghĩ rằng tôi bằng cách nào đó so sánh sai phân loại vì khi tôi gỡ lỗi, nó trả về TRUE luôn.

+3

câu lệnh if của bạn không bao giờ có thể trả về false - nút không phải là chế độ xem ... Nhưng bạn có thể kiểm tra qua điểm ngắt trong trình gỡ lỗi mà bạn nhận được ở các vị trí nhấn khác nhau. – Axel

+0

Oh..Tôi chỉ nhận thấy rằng 'UIBarButtonItem' không phải là một' UIView' :) Cảm ơn. –

Trả lời

27
 
    if ([touch.view.superview isKindOfClass:[UIToolbar class]]) return FALSE; 

Đây là cách tôi làm cho nó hoạt động. Các superview là một UIToolbar, có lẽ là UIBarButtonIttemis a view sau khi tất cả.

+0

Điều này làm việc ở nơi thử nghiệm lần truy cập trên chế độ xem của trình nhận dạng cử chỉ không thành công. Để rõ ràng, tôi đã làm việc trong một UITableView và vị trí của cử chỉ đã được báo cáo là '{0, contentOffset - someConstant}'. Kiểm tra xem cảm ứng là một giải pháp tốt. Cảm ơn. – Justin

32

Hoặc bạn chỉ có thể thực hiện [singleTap setCancelsTouchesInView:NO]. Ví dụ:

UITapGestureRecognizer *singleTap = [ 
    [UITapGestureRecognizer alloc] 
    initWithTarget: self 
    action: @selector(yourSelector:) 
]; 
[singleTap setCancelsTouchesInView:NO]; 
[[self view] addGestureRecognizer: singleTap]; 
+1

Cũng có sẵn trong Trình tạo giao diện như _Canceled trong Chế độ xem_. Tuyệt quá! –

+0

Chỉ có điều đã hoạt động. Và giống như một sự quyến rũ, tôi có thể thêm! không gây rối với phần còn lại của mã. Thks! – StinkyCat

+0

Câu trả lời tuyệt vời cảm ơn bạn! –

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