開發App分版本是很常見的,例如免費版vs.付費版,中文版vs.英文版vs.韓文版等,我開發時遇到的是分國家版本的類型,需要用到的除了介面上的語言顯示控制外,還有例如在註冊資訊上也期望使用者使用該國語言註冊姓名等限制,第一個想到的方法就是在填寫個人資料的輸入框中去限制使用者能輸入的語言,這樣就能確保填入的資訊是我們要的語言,但如何能辦到呢?
除了App預設的語言在系統「偏好的語言順序」中的先後順序可以影響自動彈出的輸入法是哪個語言外,
想在某個單一的輸入框限制使用者輸入的語言,可使用正則表達式,
去完成我們想指定輸入語言的限制
@objc private func LanguageCheck(obj:Notification) {
guard let _:UITextRange = nameTextField.markedTextRange else {
let cursorPostion = nameTextField.offset(from: nameTextField.endOfDocument, to: nameTextField.selectedTextRange!.end)
let pattern = "[^\\u4E00-\\u9FA5a-zA-Z\\u0E00-\\u0E7F]"
let str = nameTextField.text!.pregReplace(pattern: pattern, with: "")
nameTextField.text = str
let targetPostion = nameTextField.position(from: nameTextField.endOfDocument, offset: cursorPostion)!
nameTextField.selectedTextRange = nameTextField.textRange(from: targetPostion, to: targetPostion)
return
}
}
限制只能輸入中文:\u4E00-\u9FA5a
限制只能輸入英文:zA-Z
限制只能輸入泰文:\u0E00-\u0E7F
限制只能輸入韓文:\uac00-\ud7a3
限制能輸入中文英文泰文:^\u4E00-\u9FA5a-zA-Z\u0E00-\u0E7F