2012-07-20 23 views
24

Hiện tại tôi đang gặp phải sự cố, tôi muốn thực hiện hành động khi UIImageView trên UITableViewCell của tôi đã được khai thác.Nhấn vào Ghi nhận cho UIImageView trong UITableViewCell

Câu hỏi: Tôi làm cách nào? Có thể bất kỳ một trong những hiển thị cho tôi mã, hoặc bất kỳ hướng dẫn?

Cảm ơn trước!

+0

Thêm UITapGestureRecognizer để bạn UIImageView. – robertvojta

Trả lời

45

Điều này thực sự dễ hơn bạn nghĩ. Bạn chỉ cần đảm bảo rằng bạn cho phép tương tác người dùng trên imageView và bạn có thể thêm cử chỉ nhấn vào đó. Điều này nên được thực hiện khi ô được khởi tạo để tránh có nhiều thao tác nhấn được thêm vào cùng một chế độ xem hình ảnh. Ví dụ:

- (instancetype)initWithCoder:(NSCoder *)aDecoder 
{ 
    if (self = [super initWithCoder:aDecoder]) { 
     UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myTapMethod:)]; 

     [self.imageView addGestureRecognizer:tap]; 
     [self.imageView setUserInteractionEnabled:YES]; 
    } 

    return self; 
} 

- (void)myTapMethod:(UITapGestureRecognizer *)tapGesture 
{ 
    UIImageView *imageView = (UIImageView *)tapGesture.view; 
    NSLog(@"%@", imageView); 
} 
+0

Trong myTapMethod, bạn sẽ truy cập vào ImageView như thế nào? – oyalhi

+1

@oyalhi lớp UIGestureRecognizer có [chế độ xem] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIGestureRecognizer_Class/index.html#//apple_ref/occ/instp/UIGestureRecognizer/view) tài sản sẽ đưa bạn đến đó. Xem câu trả lời cập nhật của tôi. –

3

bạn có thể sử dụng một customButton thay UIImageView

+0

Cảm ơn, giải pháp đơn giản. – dzensik

0

Một vòi cử chỉ recogniser có thể rất nhớ đói và có thể gây những thứ khác trên trang để phá vỡ. Cá nhân tôi sẽ tái thuyết trình bạn tạo một ô bảng tùy chỉnh, chèn một nút vào khung ô tùy chỉnh và trong mã tableview đặt self.customtablecell.background.image thành hình ảnh bạn muốn. Bằng cách này bạn có thể gán nút một IBaction để làm cho nó đẩy tới bất kỳ khung nhìn nào bạn muốn.

6

Hãy thử điều này

//within cellForRowAtIndexPath (where customer table cell with imageview is created and reused) 
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleImageTap:)]; 
tap.cancelsTouchesInView = YES; 
tap.numberOfTapsRequired = 1; 
[imageView addGestureRecognizer:tap]; 

// handle method 
- (void) handleImageTap:(UIGestureRecognizer *)gestureRecognizer 
{ 
    RKLogDebug(@"imaged tab"); 
} 

chắc chắn u có ....

imageView.userInteractionEnabled = YES; 
+0

+ 1 để hiển thị chuyển trình nhận dạng vào hàm. Tại sao điều này "tap.delegate = self;" khi bạn không thực sự sử dụng nó? – Kevin

0

Sử dụng ALActionBlocks hành động trong khối

__weak ALViewController *wSelf = self; 
imageView.userInteractionEnabled = YES; 
UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithBlock:^(UITapGestureRecognizer *weakGR) { 
    NSLog(@"pan %@", NSStringFromCGPoint([weakGR locationInView:wSelf.view])); 
}]; 
[self.imageView addGestureRecognizer:gr]; 
Các vấn đề liên quan