iOS(Swift) TextField限制輸入文本的長度(不是字數)

來源:互聯網
上載者:User

標籤:

最近做項目有一個特殊需求,就是需要限制一個TextField的輸入文本的長度在一定範圍內(注意,不是字數),上網查了一圈沒有找到類似文章,這裡把我的方法寫進來,mark一下:

1、對TextField添加監聽函數:

textField.addTarget(self, action: "textFieldTextDidChange:", forControlEvents: UIControlEvents.EditingChanged)

2、在輸入內容變化時進行處理:

func textFieldTextDidChange(textField:UITextField) {    if let _ = textField.text {        if let positionRange = textField.markedTextRange {            if let _ = textField.positionFromPosition(positionRange.start, offset: 0) {                //正在使用拼音,不進行校正            } else {                //不在使用拼音,進行校正                self.checkTextFieldLengthAndModify(textField)            }        } else {            //不在使用拼音,進行校正            self.checkTextFieldLengthAndModify(textField)        }    }}

3、實現校正方法

//檢查輸入框的文字是否超長,如果超出長度則做截短func checkTextFieldLengthAndModify(textField:UITextField) {    if let text = textField.text {        if self.checkTextFielLength(textField, str: text) {            //長度正常,不處理        } else {            //超出長度,開始處理            self.view.makeToastCenter("輸入文字過長")                        let len = text.length            let txt = text as NSString            if len > 0 {                //進行截短,看是否超長,如果不超長,則繼續截短,直到不超長為止                //Exp:                //apple                //appl                //app                for var i = len-1; i >= 0; i-- {                    let txt_s = txt.substringToIndex(i)                    //print("txt_s : \(txt_s)")                    if self.checkTextFielLength(textField, str: txt_s) {                        //就截取到這了                        textField.text = txt_s                        break                    } else {                        //繼續截取                    }                }            }        }    }}

4、實現checkTextFielLength,判斷文字是否超出輸入框長度

func checkTextFielLength(textField: UITextField, str: NSString) -> Bool {    let rect = str.boundingRectWithSize(CGSizeMake(CGFloat(MAXFLOAT), CGFloat(MAXFLOAT)), options: .UsesLineFragmentOrigin, attributes: textField.defaultTextAttributes, context: nil)    if rect.width > textField.width {        return false    } else {        return true    }}

 

這裡的長度限制是根據UITextField的長度來限制的,你也可以根據自己的需求來設定限制的長度。

 

iOS(Swift) TextField限制輸入文本的長度(不是字數)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.