我如何使用 sender 参数来确定选择了什么 UIImageView?
How do I use the sender argument to figure out what UIImageView was selected?
我有八个 UIImageViews
,如果与之关联的 UITapGestureRecognizer
被激活,我想淡化。我已将所有识别器连接到此 IBAction
:
- (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
而不是 mumbleMumbleImageView
.
只需将 setAlpha:
发送到该指针。
发件人是 UITapGestureRecognizer
,不是 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;
}
我有八个 UIImageViews
,如果与之关联的 UITapGestureRecognizer
被激活,我想淡化。我已将所有识别器连接到此 IBAction
:
- (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
而不是 mumbleMumbleImageView
.
只需将 setAlpha:
发送到该指针。
发件人是 UITapGestureRecognizer
,不是 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;
}