UITapGestureRecognizer initWithTarget:动作:方法采取参数?
我正在使用UITapGestureRecognizer
因为我使用UIScrollView
作为我的UILabel
的容器。 基本上我试图用参数使用一个动作方法,所以我可以例如发送myLabel.tag
值的行动方法知道要采取什么行动取决于已经触发了一个水龙头UILabel。
其中一种方法是使用与UILabel
一样多的操作方法,但这不是代码方式的“漂亮”。 我想实现的只是一个具有switch语句的操作方法。
这是可能的,还是我必须这样做(叹气):
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 }
将一个手势识别器添加到您的各种标签的超视图视图:
UITapGestureRecognizer *myLabelTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myLabelTapHandler:)]; [myLabelParent addGestureRecognizer:myLabelTap];
然后,当您处理手势时,确定哪个标签被点击:
-(void)myLabelTapHandler:(UIGestureRecognizer *)gestureRecognizer { UIView *tappedView = [gestureRecognizer.view hitTest:[gestureRecognizer locationInView:gestureRecognizer.view] withEvent:nil]; // do something with it }
您可以只使用一个UITapGestureRecognizer
并在您的手势处理程序( myLaberXTap
)中使用,其语法如下:
- (void)handleGesture:(UITapGestureRecognizer*)gestureRecognizer { ... }
使用gesture.view
来知道你正在使用哪个视图。