我針對iOS 5.1和使用故事板。在UITableViewCell中有一個UIButton,當它被點擊時,調用「Touch Up Inside」方法,調用Web服務,然後在完成處理程序中,通過調用一個函數來更新UIButton的文本,該函數爲所有按鈕狀態設置文本像這樣:iOS: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。任何想法,我可以讓文本立即更新,當有人做長按+釋放?
雖然這是一個很好的解決方法(可能是解決方案?),但我仍然好奇爲什麼在按鈕文本更新之前有5秒的延遲。 –
@Alphatrak我最好猜測的是你正在使用阻止網絡操作,這意味着你的用戶界面無法在主線程解除阻塞之前更新(或者,因此,當你的網絡請求完成時)。 – CodaFi