如何判断某个按钮是否在某个时间被按下

时间:2015-05-29 23:58:45

标签: ios objective-c uibutton

我有一个带图像的按钮,稍后按钮图像会改变,然后几秒后再回来。我希望能够判断在图像不同时是否单击了按钮。谢谢!

1 个答案:

答案 0 :(得分:0)

你有几个选择,但我会详细说明其中两个。第一种是更加独立和万无一失,但第二种说法更容易阅读和理解。

检查背景图像

最简单的方法可能就是测试图像本身。图像会不时变化,但是当按下按钮时,你并不真正关心,你只关心它是什么样的背景。

换句话说,你真正需要知道的是按钮的背景是MainBackground还是AlternateBackground,所以当按下按钮时,你可以简单地检查它是哪一个。

尝试这样的事情,当按下按钮时:

-(void)buttonPressed:(UIButton*)sender {
    UIImage *mainBackground = [UIImage imageNamed:@"YOUR_IMAGE_NAME"];

    NSData *imgdata1 = UIImagePNGRepresentation(sender.image);
    NSData *imgdata2 = UIImagePNGRepresentation(mainBackground);

    if ([imgdata1 isEqualToData:imgdata2]) {
        // The button's background is the MainBackground, do one thing
    } else {
        // The button's background is the AlternateBackground, do another thing
    }
}

跟踪当前显示的图像

或者,只要图像的背景发生变化,就可以翻转BOOL值。有点像...

@property BOOL isMainBackground;

...在你的H档案中,然后每当你设置按钮的背景图片时,你也设置self.isMainBackground = YES;self.isMainBackground = NO;

然后,按下按钮的方法看起来像这样:

-(void)buttonPressed:(UIButton*)sender {
    if (self.isMainBackground) {
        // The button's background is the MainBackground, do one thing
    } else {
        // The button's background is the AlternateBackground, do another thing
    }
}