限定UITextField輸入

在使用UITextField時,可能會需要限定UITextField的輸入內容,此時需要在以下方法中 進行相關設置

1、限制輸入字符類型

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSCharacterSet *cs;
//invertedSet方法是去反字符,把所有的除了NUMBERS 里的字符都找出來(包含去空格功能)

    cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];
 
// componentsJoinedByString 用于根據一個字符串來將數組連接成一個新的字符串。
    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""]; //按cs分離出數組,數組按@""分離出字符串
 
    BOOL canChange = [string isEqualToString:filtered];
 
    return canChange;
//這樣寫了以后,輸入非數字時不能輸入
}

//上面那個NUMBERS是一個宏,可以在文件頂部定義:

#define NUMBERS @”0123456789n” 

//這個代表可以輸入數字和換行,請注意這個n,如果不寫這個,Done按鍵將不會觸發(fā),如果用在SearchBar中,將會不觸發(fā)Search事件,因為你自己限制不讓輸入n,好慘,我在項目中才發(fā)現(xiàn)的。

//所以,如果你要限制輸入英文和數字的話,就可以把這個定義為:

#define kAlphaNum   @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″

//當然,你還可以在以上方法return之前,做一提示的,比如提示用戶只能輸入數字之類的。如果你覺得有需要的話。

2、限制只能輸入一定長度的字符

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; 
{ 
//string就是此時輸入的那個字符 textField就是此時正在輸入的那個輸入框 返回YES就是可以改變輸入框的值 NO相反
   
    if ([string isEqualToString:@"n"]) //按回車可以改變 //這里這個字符寫什么,就只能輸入什么
    { 
        return YES; 
    } 
 
    NSString *toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string]; //得到輸入框的內容
 
    if (self.myTextField == textField) //判斷是否是我們想要限定的那個輸入框
    { 
        if ([toBeString length] > 20) { //如果輸入框內容大于20則彈出警告
  textField.text = [toBeString substringToIndex:20]; 
            UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:nil message:@"超過最大字數不能輸入了" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil] autorelease]; //iOS8.3以后用 
UIAlertController
            [alert show]; 

/*
UIAlertController *alertView = [UIAlertController alertControllerWithTitle:@"提示"message:@"超過最大字數不能輸入了"preferredStyle:UIAlertControllerStyleActionSheet];
        [selfpresentViewController:alertViewanimated:YEScompletion:nil];
*/
            return NO; 
        } 
    } 

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容