下面是一个类型动画,它在固定的时间间隔内将数组中的字符添加到文本字段中:
@IBOutlet weak var textFieldMain: UITextField!
var myText = Array("Hi! I'm Cesare.".characters)
var myString = "Hi! I'm Cesare."
var typingAnimationCounter = 0
var typingAnimationTimer: NSTimer?
func fireTimer() {
typingAnimationTimer = NSTimer.scheduledTimerWithTimeInterval(0.05, target: self, selector: "typeLetter", userInfo: nil, repeats: true)
}
func typeLetter() {
if typingAnimationCounter < myText.count {
textFieldMain.text = textFieldMain.text! + String(myText[typingAnimationCounter])
typingAnimationTimer?.invalidate()
typingAnimationTimer = NSTimer.scheduledTimerWithTimeInterval(0.15, target: self, selector: "typeLetter", userInfo: nil, repeats: false)
} else {
typingAnimationTimer?.invalidate()
}
typingAnimationCounter++
}我希望现在就删除textField的字符(比如如果是打字动画,而是删除字符)。不过,我不知道怎么做。
func fireDeletionTimer() {
typingAnimationTimer = NSTimer.scheduledTimerWithTimeInterval(0.45, target: self, selector: "deleteLetter", userInfo: nil, repeats: true)
}
func deleteLetter() {
if typingAnimationCounter < myText.count - 1 {
let index = myString.characters.count - typingAnimationCounter - 1
textFieldMain.text = myString.stringByReplacingOccurrencesOfString(String(myText[index]), withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
typingAnimationTimer?.invalidate()
typingAnimationTimer = NSTimer.scheduledTimerWithTimeInterval(0.45, target: self, selector: "deleteLetter", userInfo: nil, repeats: false)
} else {
typingAnimationTimer?.invalidate()
}
typingAnimationCounter++
}我想用一个空字符串替换每个字符,但是它不起作用(字符串中的随机字母被替换)。我怎样才能修正我的代码?
发布于 2016-03-05 13:21:13
为什么不做以下工作:
func deleteLetter() {
if textFieldMain.text != "" {
textFieldMain.text = str.substringToIndex(textFieldMain.text.endIndex.predecessor())
} else {
typingAnimationTimer?.invalidate()
}
}顺便说一句,如果您在fireDeletionTimer()中使用“重复:真”启动计时器,您不需要在deleteLetter()中一次又一次地重新创建它。
而且,stringByReplacingOccurrencesOfString()会清除文本中的每个字母实例,而不仅仅是最后一个。
发布于 2016-03-05 13:27:27
我会将deleteLetter()方法重写为如下所示:
func deleteLetter() {
myString = myString.substringToIndex(myString.endIndex.predecessor())
textFieldMain.text = myString
typingAnimationTimer?.invalidate()
if myString.characters.count > 0 {
typingAnimationTimer = NSTimer.scheduledTimerWithTimeInterval(0.05, target: self, selector: "deleteLetter", userInfo: nil, repeats: false)
}
}编辑:看起来佐尔坦已经超过我了。
https://stackoverflow.com/questions/35814451
复制相似问题