我有一个班级:
class GameManager {...
在其中我有这个功能:
func startGame() {
msgTimer = Timer(timeInterval: 0.5, target: self, selector: #selector(typeMessage(_:)), userInfo: nil, repeats: true)
}
和它调用的选择器:
@objc func typeMessage(_ sender:Timer) {
if textCount > strInitText.characters.count {
let strThisChar = strInitText[strInitText.index(strInitText.startIndex, offsetBy: textCount)]
strDisplayText = strDisplayText + String(strThisChar)
print(strDisplayText)
}
}
但是选择器永远不会被调用。
答案 0 :(得分:4)
这个计时器需要在运行循环中调度(通过 - [NSRunLoop addTimer:])才能触发。
并从主线程中调用它,如下所示:
rw = ((s/(2*pi*r))*360)*(pi/180) # rotation angle
但是,我建议您在此实例中使用scheduledTimer删除此步骤:
创建一个计时器,并在默认模式下在当前运行循环上安排它。
答案 1 :(得分:4)
更改
msgTimer = Timer(timeInterval: 0.5, target: self, selector: #selector(typeMessage(_:)), userInfo: nil, repeats: true)
到
msgTimer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(typeMessage(_:)), userInfo: nil, repeats: true)