以编程方式触发按钮点击事件?

Get*_*tsy 124 iphone objective-c ios

有没有办法以编程方式触发按钮单击事件?我在UIView中放置了一个按钮,在特定情况下,我想通过代码单击按钮,而不是手动作为用户.iOS开发有可能吗?请提供您的建议并指导我如何做到这一点.

谢谢.

Zak*_*man 310

有点像Ken的答案,但更灵活,因为如果您更改或添加多个按钮,它会跟踪按钮的实际操作.

[button sendActionsForControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

  • 这是否突出显示按钮,如果`button.showsTouchWhenHighlighted = YES`就像实际触摸一样? (8认同)
  • 如果你需要突出显示,你可以这样做.[按钮设置突出显示:是]; [button sendActionsForControlEvents:UIControlEventTouchUpInside]; [按钮设置突出显示:否]; 它很棒.-rrh (7认同)
  • 这个答案很棒b/c它可以很容易地转换为其他控件,如UISwitch(UIControlEventValueChanged),在我的情况下比直接调用目标/动作代码要好得多b/c我希望交换机切换!谢谢. (2认同)

Cha*_*ine 13

我有同样的问题.我会发表评论,但我的声誉不够高.所以,我会发布完整的答案:

[btn setHighlighted:YES];
[btn sendActionsForControlEvents:UIControlEventTouchUpInside];
[btn performSelector:@selector(setHighlighted:) withObject:NO afterDelay:0.25];
Run Code Online (Sandbox Code Playgroud)

这将以编程方式点击按钮并突出显示一段看似正常的时间.Richie的建议不起作用,因为按钮仅在不知不觉中突出显示(如果有的话).


Eva*_*ski 6

为什么不执行用户按下按钮时执行的代码?

-(void)myMethod
{
   // do stuff
}

-(IBAction)myButtonClick:(id)sender
{
    [self myMethod];
}

-(void)clickMyButton
{
    [self myMethod];
    // OR
    [self myButtonClick:nil];
}
Run Code Online (Sandbox Code Playgroud)