限制输入框语言

缘由:

开发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


<<:  [Day9] Android : Kotlin笔记:JetPack - Fragment KTX

>>:  比起懂最新的知识,工程师更应该懂这些.......

Day 23 介绍 FactoryBot Rails 及设定

该文章同步发布於:我的部落格 首先,我们一样先介绍基本的安装以及设定,当一切就绪的时候,写测试这件...

Day 05: Creational patterns - Simple Factory Method

目的 传入参数後,藉由 switch-case 来建立一系列拥有相同亲代的物件 说明 作为入门 De...

身份验证服务交换(The Authentication Service (AS) Exchange)

Kerberos基於对称密钥加密技术,并且需要受信任的第三方,并且可以选择在身份验证的某些阶段使用公...

Day28 Gin with SMTP Server

What is an SMTP Server? SMTP 全名为Simple Mail Transf...

Laravel:Route Wildcards 2

前言 Laravel:Route Wildcards - iT 邦帮忙::一起帮忙解决难题,拯救 I...