我的目标是 iOS 5.1 并使用 Storyboard。我在 UITableViewCell 中有一个 UIButton,当点击它时,调用“Touch Up Inside”方法,调用 Web 服务,然后在完成处理程序中,通过调用为所有按钮状态设置文本的函数更新 UIButton 的文本像这样:
+(void) setButtonText:(NSString *)text forButton:(UIButton *)button
{
[button setTitle:text forState:UIControlStateNormal];
[button setTitle:text forState:UIControlStateDisabled];
[button setTitle:text forState:UIControlStateHighlighted];
[button setTitle:text forState:UIControlStateSelected];
}
如果你只是点击按钮,它会很好用,但是如果你长按它然后释放,web 服务调用和完成处理程序会被调用并立即返回,但是在按钮上的文本更新之前大约需要 5 秒。我试过在按钮和 self.view 上调用 setNeedsDisplay。当有人长按+发布时,我有什么想法可以让文本立即更新吗?
最佳答案
您不一定需要检测长按,只需更改按钮触发选择器的状态即可。如果您以编程方式执行此操作,则应该具有以下内容:
[self.myButton addTarget:self action:@selector(mySelector) forControlEvents:UIControlEventTouchDown];
在 XIB/ Storyboard中,该选项在“Touch Down”下的调色板中可用:
这会导致在触摸按钮时立即触发选择器,而不是我可以假设的,您已设置为
UIControlEventTouchUpInside
,其中当触摸在按钮附近结束时发送事件。关于objective-c - iOS:如果您长按然后松开,UIButton 文本不会立即改变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13956490/