如何使用sender参数来确定选择了哪些UIImageView?

Cal*_*ter 2 objective-c uiimageview sender ios

UIImageViews如果UITapGestureRecognizer与它相关的那个被激活,我有八个我想要淡化.我有所有识别器连接到这个IBAction:

- (IBAction)disableDie:(id)sender {

    NSLog(@"%@", sender);
    NSLog(@"%ld",[(UIGestureRecognizer *)sender view].tag);

}
Run Code Online (Sandbox Code Playgroud)

我以为我可以用这样的循环来做到这一点:

- (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);

}
Run Code Online (Sandbox Code Playgroud)

但没有任何事情发生UIImageView在按下,但消息被打印出来.我已经使用了diceOutletArray其他循环,它的工作原理.

stu*_*stu 5

发件人是a UITapGestureRecognizer,而不是a UIImageView,因此numberImage == sender永远不会是真的.

试试这个:

- (IBAction)disableDie:(UIGestureRecognizer *)sender {
    for (UIImageView *numberImage in self.diceOutletArray) {
        if (numberImage == sender.view) {
            numberImage.alpha = 0.65;
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你根本不需要循环,这也可以正常工作:

- (IBAction)disableDie:(UIGestureRecognizer *)sender {
    sender.view.alpha = 0.65;
}
Run Code Online (Sandbox Code Playgroud)