2013-10-03 16 views
9

Tôi gặp một loạt các imageview sắp xếp, và gán một recognizer TapView để nó[UITapGestureRecognizer tag]: chọn không được công nhận gửi đến dụ

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] 
             initWithTarget:self action:@selector(action:)]; 
[tapRecognizer setNumberOfTouchesRequired:1]; 
[tapRecognizer setDelegate:self]; 
imageView.userInteractionEnabled = YES; 
[imageView addGestureRecognizer:tapRecognizer]; 

và tôi đã xác định chọn như:

-(void) action:(id)sender 
    { 
    NSLog(@"TESTING TAP"); 
    NSLog (@"%d",[sender tag]); 
    } 

Điều này đang bị lỗi và tôi nhận được thông báo Lỗi là: -

[UITapGestureRecognizer tag]: unrecognized selector sent to instance 0x145d0210

Trả lời

28

Bạn có thể sử dụng này ..

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] 
             initWithTarget:self action:@selector(action:)]; 
[tapRecognizer setNumberOfTouchesRequired:1]; 
[tapRecognizer setDelegate:self]; 
imageView.userInteractionEnabled = YES; 
imageView.tag = 1111; 
[imageView addGestureRecognizer:tapRecognizer]; 

Và trong thử nghiệm này ..

-(void) action:(id)sender 
    { 
    NSLog(@"TESTING TAP"); 
    UITapGestureRecognizer *tapRecognizer = (UITapGestureRecognizer *)sender; 
    NSLog (@"%d",[tapRecognizer.view tag]); 
    } 

Giải thích:

UITapGestureRecognizer không có tài sản như tag. nhưng nó có tài sản view, từ tài sản này, bạn có thể truy cập xem mà UITapGestureRecognizer được đính kèm.

Hy vọng nó sẽ giúp bạn

+0

yup công trình này:) cảm ơn u .... – Wodjefer

+0

Chào mừng và cảm thấy tự do khi được giúp đỡ. Và vui lòng chấp nhận câu trả lời để những người dùng khác có thể nhận trợ giúp từ bài đăng của bạn –

+0

cảm ơn giải thích chi tiết –

7

Không UITapGestureRecognizer cũng không UIGestureRecognizer tuyên bố thuộc tính hoặc phương pháp được gọi là tag.

Bạn không thể sử dụng. Đó là lý do tại sao bạn nhận được lỗi.

Trên ghi chú liên quan. Tôi thực sự không thích sử dụng tag nói chung. Luôn luôn có một cách tốt hơn để làm những gì bạn đang làm mà không cần sử dụng tag.

+1

cud u plzz đề xuất một cách tốt hơn :) cảm ơn cho nhận xét. – Wodjefer

+0

@Wodjefer Bạn đang cố gắng làm gì với 'tag'? tức là tại sao bạn sử dụng nó? Nếu tôi biết rằng tôi có thể tìm cách gợi ý một cách tốt hơn. – Fogmeister

+0

Trên thực tế, tôi có một loạt các lần xem hình ảnh được sắp xếp và khi nó cuộn qua các hình ảnh ảo, tôi có được bản xem trước .. chúng tôi có trong bộ sưu tập iphone (ios7) – Wodjefer

3

Bạn không thể nhận tag tài sản của UITapGestureRecognizer thay vì bạn có để có được tài sản quan điểm của mình của,

Bạn có thể thử,

-(void)action:(id)sender 
    { 
    NSLog(@"TESTING TAP"); 
    NSLog (@"%d",[[sender view]tag]); 

    } 
+0

Cảm ơn rất nhiều vì điều này. Các phương pháp khác không hiệu quả với tôi! – shrishaster

10

Chỉ cần thay đổi phương thức Selector của bạn với following..and nó sẽ làm việc

tapgesture sẽ có toàn bộ quan điểm được khai thác .. và sau đó bạn có thể nhận được tài sản tag từ nó như tôi đã nêu trong sau

-(void)action:(UITapGestureRecognizer *)tapGesture{ 

    NSLog(@"TESTING TAP"); 
     NSLog (@"%d",tapGesture.view.tag); 

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