Ios 如何使用sender参数确定选择了哪个UIImageView?
我有八个Ios 如何使用sender参数确定选择了哪个UIImageView?,ios,objective-c,uiimageview,sender,Ios,Objective C,Uiimageview,Sender,我有八个UIImageView,如果与之关联的UIAppgestureRecognitizer被激活,我想淡出这些视图。我已将所有识别器连接到此iAction: - (IBAction)disableDie:(id)sender { NSLog(@"%@", sender); NSLog(@"%ld",[(UIGestureRecognizer *)sender view].tag); } 我想我可以用这样的循环来做: - (IBAction)disableDie:(id)
UIImageView
,如果与之关联的UIAppgestureRecognitizer
被激活,我想淡出这些视图。我已将所有识别器连接到此iAction
:
- (IBAction)disableDie:(id)sender {
NSLog(@"%@", sender);
NSLog(@"%ld",[(UIGestureRecognizer *)sender view].tag);
}
我想我可以用这样的循环来做:
- (IBAction)disableDie:(id)sender {
for (UIImageView *numberImage in self.diceOutletArray) {
if (numberImage == sender) {
numberImage.alpha = 0.65;
}
}
NSLog(@"%@", sender);
NSLog(@"%ld",[(UIGestureRecognizer *)sender view].tag);
}
但是按下的
UIImageView
没有任何变化,但是消息的内容会被打印出来。我在其他循环中使用了diceOutletArray
,它可以工作。手势识别器是发送者,而不是视图。您应该在sender
的打印输出中看到这一点。您需要获取识别器的视图(假设它直接连接到其图像视图)
一旦你有了它,你就不需要再去找另一个指向视图的指针了:你已经有了它。它只是名为sender.view
,而不是mumbleumbleimageview
只需将
setAlpha:
发送到该指针。发送方是UIAppgestureRecognitizer
,而不是UIImageView
,并且
因此,numberImage==sender
将永远不会为真
请尝试以下方法:
- (IBAction)disableDie:(UIGestureRecognizer *)sender {
for (UIImageView *numberImage in self.diceOutletArray) {
if (numberImage == sender.view) {
numberImage.alpha = 0.65;
break;
}
}
}
实际上,您根本不需要循环,这也可以正常工作:
- (IBAction)disableDie:(UIGestureRecognizer *)sender {
sender.view.alpha = 0.65;
}