当UI更新时,IOS会收到通知。

时间:2016-09-02 17:17:44

标签: ios swift textdocumentproxy

我有自定义键盘扩展程序。按下删除键时调用此函数:

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是相关的,但我把它包括在内,只是加入。

问题在于即使我的​​控制台打印了#34;删除结束&#34;循环完成后,文本字段的UI不会更新,直到经过一秒或两秒。

似乎正在呼唤

(self.textDocumentProxy as UIKeyInput).deleteBackward()

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

如何在实际更新用户界面时收到通知?

1 个答案:

答案 0 :(得分:0)

像这样改变:

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

说明:

UI必须在主线程中工作,因此当您使用后台队列时,您总是必须在主队列中分配UI更新。