可以检测按钮发件人是否来自Touch Up Inside和Touch Up Outside?

时间:2013-07-03 19:58:05

标签: objective-c cocoa-touch uibutton

我有一个按钮,我希望Touch Up Inside和Touch Up Outside动作都采用相同的方法。然后,我希望该方法可以解决发生的事件,如下所示:

- (IBAction)buttonMethod:(UIButton *)sender forEvent:(UIEvent *)event {
if (event == UIControlEventTouchUpInside)
    NSLog(@"Touch up inside!");

if (event == UIControlEventTouchUpOutside)
    NSLog(@"Touch up outside!");   
}
}

这似乎不起作用,因为触摸事件似乎继承自UIControl,UIControl与UIEvent不在同一个Universe中。有没有办法告诉我的方法哪个动作导致调用该方法?

1 个答案:

答案 0 :(得分:3)

将其拆分为两种方法,如果出于某种原因,您希望您的逻辑只是一个传递消息。

- (IBAction)buttonMethod:(UIButton *)sender forEvent:(UIEvent *)event controlEvent:(UIControlEvents)event {
    if (event == UIControlEventTouchUpInside)
        NSLog(@"Touch up inside!");

    if (event == UIControlEventTouchUpOutside)
        NSLog(@"Touch up outside!");   
}

- (IBAction)buttonUpInside:(UIButton *)sender forEvent:(UIEvent *)event {
    [self buttonMethod:sender forEvent:event controlEvent:UIControlTouchUpInside];
}

- (IBAction)buttonUpOutside:(UIButton *)sender forEvent:(UIEvent *)event {
    [self buttonMethod:sender forEvent:event controlEvent:UIControlTouchUpOutside];
}