出于某种原因,当尝试通过 Stop() 方法以编程方式激活按钮时,按钮图像不会变回与正常状态关联的图像,直到我再次用鼠标单击该按钮。有什么想法吗?
public void Stop()
{
buttonStartStop.SendActionForControlEvents(UIControlEvent.TouchUpInside);
}
partial void actionButtonStartStopPress(MonoTouch.Foundation.NSObject sender)
{
Console.WriteLine("StartStop Button State On Entering Handler: " + buttonStartStop.State);
if(buttonStartStop.State == UIControlState.Highlighted)
{
buttonStartStop.Selected = true;
buttonStartStop.Highlighted = true;
buttonLiveHome.Enabled = false;
buttonLiveBack.Enabled = false;
buttonCalibrate.Enabled = false;
MainLoop.StreamData(true);
}
else
{
buttonStartStop.SetTitle("Start", UIControlState.Normal);
buttonStartStop.Selected = false;
buttonStartStop.Highlighted = false;
buttonLiveHome.Enabled = true;
buttonLiveBack.Enabled = true;
buttonCalibrate.Enabled = true;
MainLoop.StreamData(false);
}
Console.WriteLine("StartStop Button State On Exiting Handler (0 means Normal): " + buttonStartStop.State);
}
最佳答案
您必须从按钮的主线程发送操作。
public void Stop()
{
buttonStartStop.InvokeOnMainThread (new NSAction (()=> {
buttonStartStop.SendActionForControlEvents(UIControlEvent.TouchUpInside);
}));
}
关于ios - 为什么 UIButton 在以编程方式调用其处理程序时不更改其图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10668715/