iOS TextField只能輸入字母和數字+字數限制

項目上有個輸入稅號的需求,要求只能輸入字母和數字,并且字母只能是大寫字母

一、只能輸入字母和數字

1.首先設置鍵盤樣式

self.textField.keyboardType = UIKeyboardTypeASCIICapable;

2.設置宏

#define NUM @"0123456789"
#define ALPHA @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
#define ALPHANUM @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

3.textFieldDelegate方法

// 只能輸入字母和數字
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:ALPHANUM] invertedSet];
    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
    return [string isEqualToString:filtered];
}
// 小寫字母轉大寫字母
- (void)textFieldDidEndEditing:(UITextField *)textField {
    textField.text = [textField.text uppercaseString];
}

二、字數限制

TextField字數限制,比如只能輸入25個字

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if (textField == self.titleTextField) {
        // 這里的if時候為了獲取刪除操作,如果沒有次if會造成當達到字數限制后刪除鍵也不能使用的后果.
        if (range.length == 1 && string.length == 0) {
            return YES;
        }  else if (self.titleTextField.text.length >= 25) {
            self.titleTextField.text = [textField.text substringToIndex:25];
            return NO;
        }
    }
    return YES;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容