2011-07-08 32 views
11

Tôi đang sử dụng UITapGestureRecognizer vì tôi đang sử dụng UIScrollView hoạt động như một vùng chứa cho số UILabel của mình. Về cơ bản, tôi đang cố gắng sử dụng một phương thức hành động với các đối số để tôi có thể gửi myLabel.tag giá trị cho phương thức hành động để biết hành động cần thực hiện tùy thuộc vào những gì UILabel đã được kích hoạt bằng một lần nhấn.UITapGestureRecognizer initWithTarget: action: phương thức lấy đối số?

Một cách để thực hiện việc này là có nhiều phương thức hành động như UILabel nhưng đó không phải là cách viết rất "đẹp". Những gì tôi muốn đạt được chỉ là có một phương thức hành động với các câu lệnh switch.

Đây có phải là tốt hay tôi sẽ phải làm điều đó như thế này (thở dài):

UITapGestureRecognizer *myLabel1Tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myLabel1Tap)]; 
[myLabel1Tap addGestureRecognizer:myLabel1Tap]; 

UITapGestureRecognizer *myLabel2Tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myLabel2Tap)]; 
[myLabel1Tap addGestureRecognizer:myLabel2Tap]; 

UITapGestureRecognizer *myLabelNTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myLabelNTap)]; 
[myLabel1Tap addGestureRecognizer:myLabelNTap]; 

- (void)myLabel1Tap { 
// Perform action 
} 

- (void)myLabel2Tap { 
// Perform action 
} 

- (void)myLabelNTap { 
// Perform action 
} 

Trả lời

17

Thêm một nhận dạng cử chỉ duy nhất để quan điểm cho rằng là SuperView của nhãn khác nhau của bạn:

UITapGestureRecognizer *myLabelTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myLabelTapHandler:)]; 
[myLabelParent addGestureRecognizer:myLabelTap]; 

Sau đó, khi bạn xử lý các cử chỉ, xác định nhãn được khai thác:

-(void)myLabelTapHandler:(UIGestureRecognizer *)gestureRecognizer { 
    UIView *tappedView = [gestureRecognizer.view hitTest:[gestureRecognizer locationInView:gestureRecognizer.view] withEvent:nil]; 

    // do something with it 
} 
+0

có không bạn quên cột bán trong bộ chọn? – alecnash

5

Bạn có thể sử dụng chỉ một UITapGestureRecognizer và trong xử lý cử chỉ của bạn (bạn myLaberXTap), trong đó có cú pháp:

- (void)handleGesture:(UITapGestureRecognizer*)gestureRecognizer { 
    ... 
} 

sử dụng gesture.view để biết bạn đang làm việc với chế độ xem nào.

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