Swift - 在新字符串到达​​时取消线程

时间:2017-03-16 14:18:18

标签: ios swift multithreading grand-central-dispatch dispatch-async

下面的代码允许我在UITextView上创建一个打字效果,但我想知道如何在打印新字符串时取消正在运行的线程

所以,如果我有两个字符串

var a = "aaaaaa"
var b = "bbbbbb"

并且字符串a中途打印“aaa”它停止然后继续“bbbbbb”,因为此时我的代码给了我类似“aaababababbb”

extension UITextView {
    public func typewrite(text: String, timebetweenletters: TimeInterval, fontsize: Float) {
        self.font = UIFont(name: "HelveticaNeue-Light", size: CGFloat(fontsize))
        DispatchQueue.global(qos: DispatchQoS.QoSClass.userInteractive).async {
            Helper.write(text)
            var writing = Helper.read()
            for (_,caracter) in text.characters.enumerated() {
                DispatchQueue.main.async {
                    self.text = self.text! + String(caracter)
                }
                Thread.sleep(forTimeInterval: timebetweenletters)
            }
        }
    }
}

0 个答案:

没有答案