我的应用程序中有这个功能:
func typingName(textField:UITextField){
if let typedText = textField.text {
tempName = typedText
print(tempName)
}
}
在viewDidLoad()
我写过:
textField.addTarget(self, action: #selector(typingName), for: .editingChanged)
一切正常,但我只想保存用户输入的字母。
使用此功能,如果我写"你好"它打印: " H" "他" " HEL" "地狱" "你好&#34 ;.
相反,我想拥有这个: " H" " E" " L" " L" " O"
答案 0 :(得分:2)
如果您想获得用户使用键盘输入的最后一个字符。
您可以使用UITextField
的委托方法检测它,如下面的代码所示:
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var tfName: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
//Need to confirm delegate for textField here.
tfName.delegate = self
}
//UITextField Delegate Method
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
//This will print every single character entered by user.
print(string)
return true
}
}
答案 1 :(得分:0)
对于任何Swift String ,您可以从这样的字符串中获取最新的字母:
let myString = "Hello, World"
let lastCharacter = myString.characters.last // d
请注意,lastCharacter
的数据类型是字符?(可选character),您可能希望将其作为可选绑定:
let myString = "Hello, World"
if let lastCharacter = myString.characters.last {
print(lastCharacter) // d
}
由于您正在收听editingChanged事件,因此您在typingName
功能中所要做的就是:
func typingName(textField:UITextField){
if let typedText = textField.text {
tempName = typedText
print(tempName)
if let lastCharacter = tempName.characters.last {
print(lastCharacter)
}
}
}
答案 2 :(得分:0)
检查出来
let tempName = "Hello"
print(tempName.characters.last)