我有一個UISegmentedControl顯示/隱藏像模態窗口。最初它沒有選定的細分市場。在IB中,Value Changed事件連接到方法 - (IBAction)cardClassificationChanged:(UISegmentedControl *)發送者。下面是一個方法:UISegmentedControl選擇不動畫之前更新
- (IBAction)cardClassificationChanged:(UISegmentedControl *)sender
{
NSLog(@"%d", sender.selectedSegmentIndex);
// block for updating the categorization of current card asynchronously
[self.cardActionSheet hideWithAnimation];
}
如果我註釋掉最後一行(調用-hideWithAnimation),按預期的方式選擇更改,一切正常。但是,通過調用該動畫方法,在動畫之前,UISegmentedControl選擇不會在視覺上發生變化。下面是hideWithAnimation方法:將出現此圖(從觸摸手勢)下一次
- (void)hideWithAnimation
{
CATransition *animation = [CATransition animation];
animation.type = kCATransitionFade;
animation.duration = globalAnimationLength;
[self.layer addAnimation:animation forKey:nil];
self.hidden = YES;
}
,所述UISegmentedControl將有雖然選擇了正確的片段。
看來我不應該爲UISegmentedControl調用setNeedsDisplay,但即使在cardClassificationChanged方法或hideWithAnimation方法中嘗試它時,它也不會刷新。
我很明顯缺少與UI更新相關的內容,在動畫之前需要調用哪些更新UISegmentedControl選項?
的方法'-hideWithAnimation'從來不會叫'-cardClassificationChanged:','-hideCardActionSheet:'叫代替。你能否檢查複製的代碼並修復它? –
你是對的,抱歉的混亂。 -hideCardActionSheet有一些其他邏輯/處理,然後調用-hideWithAnimation。當我能夠回到那臺機器時,我會進行更新。目前,cardClassificationChanged中的動畫或邏輯沒有任何問題,我的問題是UISegmentedControl不會在視覺上更新以反映選擇。 – aaronfalls
@ A-Live編輯,謝謝你指出。 – aaronfalls