簡體   English   中英

UIAlertAction處理程序在延遲后運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM