UITextField轉(zhuǎn)大寫/小寫后的光標(biāo)位置到最后問題

本意是限制輸入僅英文字母和數(shù)字,同時(shí)將字母轉(zhuǎn)為大寫。
測試發(fā)現(xiàn)了在修改的時(shí)候,每輸入一個(gè)字符,光標(biāo)都跑到最后,無法連續(xù)輸入修改。

解決辦法:

class CustomField {
// ...
addTarget(self, action: #selector(upperText), for: .editingChanged)
delegate = self
// ...
}

extension CustomField: UITextFieldDelegate {
    
    @objc private func upperText() {
        let textRange: UITextRange? = selectedTextRange
        text = text?.uppercased()
        selectedTextRange = textRange
    }
    
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        
        guard !string.isEmpty else {return true}
        
        let set: CharacterSet = CharacterSet(charactersIn: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")
            .inverted
        let result: String = string.components(separatedBy: set)
            .joined(separator: "")
        var valid: Bool = result == string
        let textFieldContent: String = (textField.text ?? "")
            .appending(string)
        if valid, textFieldContent.count > 10 {
            // 字符合法,但是追加后超出長度限制
            valid = false
        }
        return valid
    }
}


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • HTML 5 HTML5概述 因特網(wǎng)上的信息是以網(wǎng)頁的形式展示給用戶的,因此網(wǎng)頁是網(wǎng)絡(luò)信息傳遞的載體。網(wǎng)頁文件是用...
    阿啊阿吖丁閱讀 4,981評(píng)論 0 0
  • 1. 關(guān)于Vim vim是我最喜歡的編輯器,也是linux下第二強(qiáng)大的編輯器。 雖然emacs是公認(rèn)的世界第一,我...
    袁小象閱讀 387評(píng)論 0 0
  • vi編輯器是所有Unix及Linux系統(tǒng)下標(biāo)準(zhǔn)的編輯器,它的強(qiáng)大不遜色于任何最新的文本編輯器,這里只是簡單地介紹一...
    KingWorld閱讀 321評(píng)論 0 1
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡介】: Python 是一個(gè)...
    _小老虎_閱讀 6,354評(píng)論 0 10
  • .bat腳本基本命令語法 目錄 批處理的常見命令(未列舉的命令還比較多,請(qǐng)查閱幫助信息) 1、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,542評(píng)論 1 19

友情鏈接更多精彩內(nèi)容