【问题标题】:Not Triggering event handler of UIButton from a Method不从方法触发 UIButton 的事件处理程序
【发布时间】:2013-05-02 11:35:44
【问题描述】:

我只需要以编程方式触发 UIButton 。我看过很多帖子比如http://stackoverflow.com/questions/5625651/programmatically-fire-button-click-event

[btnLocations sendActionsForControlEvents:UIControlEventTouchDown];

此语句在“viewDidLoad”和另一个按钮处理程序中工作正常。

-(void)viewDidLoad
{
[btnName2 sendActionsForControlEvents:UIControlEventTouchDown];
}

&&&&&&&

- (IBAction)btnName1:(id)sender {
[btnName2 sendActionsForControlEvents:UIControlEventTouchDown];
}

这很好用。但为什么它不是从用户定义的方法触发。 像这样:

-(void) myMEthod
{
  if(true)
{
 [btnName2 sendActionsForControlEvents:UIControlEventTouchDown];
}
}

简单的一个。但我没有得到原因

我只需要知道为什么它没有发生?以及实现它的任何替代方案?

谢谢。

【问题讨论】:

  • 用户定义的方法是从主线程调用的吗?如果没有,则需要执行 performSelectorOnMainThread,因为 UI 事件必须在主线程上运行。
  • @MikeM : 如何从 mainThread 调用。基本上它只发生在 MainThread 但我不确定\。
  • 是否进入 if(true){} 块??
  • 是的,工作正常。
  • 我正在实现“myMethod”的功能,除了这个语句。

标签: ios uibutton


【解决方案1】:

尝试在另一个线程上调用 UI 事件可能是一个问题。尝试添加:

    - (void)fireButtonEvent:(id)unused
    {
            [btnName2 sendActionsForControlEvents:UIControlEventTouchDown];
    }

然后调用使用

    [self performSelectorOnMainThread:@selector(fireButtonEvent:)
          withObject:nil
          waitUntilDone:false];

【讨论】:

  • 工作正常。谢谢,但不包括所有功能。这里添加
  • 它触发了一些 Logs ,实际上我正在将 subView 添加到 View 。但它不是以这种方式发生的。从 UI Click 完美发生
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 2011-09-07
相关资源
最近更新 更多