2016-09-02 46 views
1

我有一个自定义的键盘扩展。按下删除键时,该功能被称为:IOS更新时会通知IOS。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), 
      { 
       for _ in 1..<50 
       { 
        (self.textDocumentProxy as UIKeyInput).deleteBackward() 
       } 
       print("Deletion End") 
       self.deleteCounter = 0 
     }) 

我不认为dispatch_async是培训相关,但我把它,只是柜面。

问题是即使我的控制台在循环结束后打印出“删除结束”,文本字段的UI也不会更新,直到一两秒钟过去。

看来呼吁

(self.textDocumentProxy as UIKeyInput).deleteBackward()

不会立即删除字符并更新UI。

如何在UI实际更新时得到通知?

+1

如果我的答案解决了您的问题,请将其标记为正确,谢谢。 –

回答

0

变化是这样的:

dispatch_async(dispatch_get_main_queue(),{ 
       for _ in 1..<50 
       { 
        (self.textDocumentProxy as UIKeyInput).deleteBackward() 
       } 
       print("Deletion End") 
       self.deleteCounter = 0 
     }) 

说明:

的UI必须在主线程工作,所以当你与后台排队工作,你总是在主队列调度的UI更新。

+0

这似乎并不奏效。在UI实际更改之前,控制台仍会打印“删除结束”。 – Roymunson