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

时间:2011-04-11 18:20:32

标签: ios objective-c iphone

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

感谢。

5 个答案:

答案 0 :(得分:301)

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

[button sendActionsForControlEvents:UIControlEventTouchUpInside];

答案 1 :(得分:11)

我遇到了与上述相同的问题。我会发表评论,但我的声誉不够高。所以,我会发布完整的答案:

[btn setHighlighted:YES];
[btn sendActionsForControlEvents:UIControlEventTouchUpInside];
[btn performSelector:@selector(setHighlighted:) withObject:NO afterDelay:0.25];

这将以编程方式点击按钮并将其突出显示一段看似正常的时间。 Richie的建议并没有奏效,因为按钮只是突出显示(如果有的话)一段时间不可察觉的时间。

答案 2 :(得分:5)

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

-(void)myMethod
{
   // do stuff
}

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

-(void)clickMyButton
{
    [self myMethod];
    // OR
    [self myButtonClick:nil];
}

答案 3 :(得分:1)

如果您正在谈论UIButton,您可以调用UIButton在点击时调用的方法。例如:

[self myButtonsTargetMethod];

答案 4 :(得分:0)

是,

[_button setHighlighted:YES];
[_button sendActionsForControlEvents:UIControlEventTouchUpInside];
[_button setHighlighted:NO];

但问题是你无法看到那些事件,因为它太快了。所以你可以做的就是用NSTimer尝试上面的代码。

NSTimer *quick = [NSTimer scheduledTimerWithTimeInterval:2.5 target:self selector:@selector(MeFirst:) userInfo:nil repeats:NO];

MeFirst是我创造的方法。