我只为按钮设计了一种方法,如何在单个方法中检测多个事件的动作

时间:2013-11-20 10:52:30

标签: ios uibutton

如何使用单个方法和多个UIControlEvents声明单个按钮?

请帮助谢谢

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIButton *button1=[UIButton buttonWithType:UIButtonTypeRoundedRect];
    button1.frame=CGRectMake(100, 100, 100, 60);
    [self.view addSubview:button1];
    [button1 addTarget:self action:@selector(button1:) forControlEvents:UIControlEventTouchUpInside];
    [button1 addTarget:self action:@selector(button1:) forControlEvents:UIControlEventTouchUpOutside];
    [button1 addTarget:self action:@selector(button1:) forControlEvents:UIControlEventTouchDragInside];
    [button1 addTarget:self action:@selector(button1:) forControlEvents:UIControlEventTouchDown];
}

1 个答案:

答案 0 :(得分:2)

您从UIButton获得的UIEvent不会向您提供有关哪个UIControlEvent导致它的任何信息。为每种事件类型注册单独的方法(推荐的解决方案)或者创建自己的UIControl子类并使其行为不同。

在内部,UIControl子类基本上使用sendActionsForControlEvents:方法,这意味着他们可以选择将他们想要的任何内容作为参数。

至于如何知道,简单的答案是为每个控制事件设置一个单独的方法。