[英]UIAlertAction handler running after delay
我正在嘗試將我的UIAlertViews更改為UIAlertControllers。 我為它設置了這個動作:
UIAlertAction *undoStopAction = [UIAlertAction actionWithTitle:@"Undo Stop"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {
[self undoStop];
}];
但是,處理程序在點擊操作后大約一秒鍾才會運行。 有什么方法可以加快速度嗎?
警報視圖的短暫延遲是正常的(不到一秒鍾)。 如果這對您不方便,您可以通過編程方式創建一個覆蓋屏幕的視圖,其中包含標簽和按鈕,基本上是一個自定義的警報視圖。
這里有一個半解決方案:
UIAlertAction的處理程序有點太晚了 - 我怎么能立即做到?
基本上,子類化警報控制器並在viewWillDisappear上運行處理程序。 您可以將處理程序塊存儲在警報控制器上。
此解決方案的問題在於,如果使用UIAlertAction添加操作,則無法像每個按鈕一樣運行處理程序。 所以這是一個主要的限制。
但是,這個解決方案對我有用(因為當警報出現時我試圖在警報后面添加一個背景視圖,並在警報消失時使警報動起來......最初我試圖用按鈕點擊,但由於處理程序被延遲,這不起作用)。
正如T先生留下的評論所暗示的那樣,可能沒有在主線程上調用處理程序,這可以解釋延遲。 嘗試將處理程序代碼嵌入:
dispatch_async(dispatch_get_main_queue()) {
<your code>
}
看看你是否還有延誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.