【发布时间】:2018-08-17 22:45:12
【问题描述】:
我尝试开发一个 ios 应用程序,我想做一些关于日文字符的东西。 我的应用程序将向用户显示拉丁字母。但是这个用户每次点击任何拉丁字符,我都会在文本字段中设置文本日文字符。这该怎么做 ?从现在开始非常感谢。
【问题讨论】:
标签: ios swift character textfield cjk
我尝试开发一个 ios 应用程序,我想做一些关于日文字符的东西。 我的应用程序将向用户显示拉丁字母。但是这个用户每次点击任何拉丁字符,我都会在文本字段中设置文本日文字符。这该怎么做 ?从现在开始非常感谢。
【问题讨论】:
标签: ios swift character textfield cjk
你想要 UITextFieldDelegate 方法
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
每次用户添加或删除一个或多个字母时,它都会触发。要使用它,您必须将 TextField 的委托设置为您的 ViewController。
例如,您可以编写(假设您有一个名为 asJapanese 的函数,它将拉丁字母转换为日语):
extension ViewController: UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if string.count > 0 {
if let text = textField.text, let textRange = Range(range, in: text) {
let japaneseString = asJapanese(string)
let updatedText = text.replacingCharacters(in: textRange, with: japaneseString)
textField.text = updatedText
return false
}
}
return true
}
}
【讨论】: