首页 文章

将按钮的目标和选择器设置为多个方法

提问于
浏览
4

我想添加多个方法,在按下按钮时作为选择器响应 . 按下按钮时,一个按钮可以有两个被调用的方法吗?

通过我的研究,我发现,在Objective-C Programming Language Guide中,一个按钮将调用所有方法与选择器同名 .

我希望我的按钮可以同时执行两个操作:

  • 播放音频文件

  • 在数组中显示视图 .

UIBarButtonItem * play = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(play :)];

欣赏建议 .

谢谢

3 回答

  • 1

    @selector() 字面上只返回一个SEL值,这只是一个名称(实际上,它在引擎盖下,它指定了任何特定的行为 . 类选择当它们被发送选择器时如何响应 .

    你当然可以有一个类实现一个方法来完成两件事,并将该方法的选择器设置为一个控件的动作:

    - (void)eatCakeAndIceCream {
        [self eatCake];
        [self eatIceCream];
    }
    

    您还可以通过重复调用 addTarget:action:forControlEvents: 向控件添加多个操作:

    [someControl addTarget:self action:@selector(eatCake) forControlEvents:UIControlEventTouchDown];
    [someControl addTarget:self action:@selector(eatIceCream) forControlEvents:UIControlEventTouchDown];
    
  • 4

    您可以为特定事件指定多个目标 - 操作对 .

    [btn addTarget:self action:@selector(playSound:) forControlEvents:UIControlEventTouchUpInside];
    [btn addTarget:self action:@selector(displayViews:) forControlEvents:UIControlEventTouchUpInside];
    
  • 10

    每次向目标添加目标时,它都会创建一个控制对象(也称为“操作消息”)(控件对象属于UI控件类型) . 此控件对象包含名为“action selector”的选择器的名称以及需要调用此选择器的目标 . 然后,该控制对象与指定的事件绑定(注册) . 您可以将多个控件对象绑定到同一事件 . 这意味着我可以有2个目标,两个选择器绑定到同一个事件 .

    [btn addTarget:oneTarget action:@selector(foo:) forControlEvents:UIControlEventTouchUpInside];
    
    [btn addTarget:twoTarget action:@selector(bar:) forControlEvents:UIControlEventTouchUpInside];
    

    在运行时,绑定到give事件的所有这些控制消息将被分派到适当的目标,换句话说,所有这些选择器方法将在它们各自的目标类对象上被调用 .

相关问题