国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS中輸入框設置指定字符輸入的方法

2019-10-21 18:42:18
字體:
來源:轉載
供稿:網友

前言

對于開發者來說,在很多情況下,一般的輸入框需要按照要求進行輸入,輸入內容由開發人員來指定。例如:密碼輸入框只能輸入純數字或者是拼音與數字結合的文本等,那么我們在開發的時候就需要做一些輸入文本的限時。下面話不多說了,來一起看看詳細的介紹吧。

一、只能輸入純數字

在這里以UITextField為例:其實現代碼如下:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { return [self validateNumber:string];}- (BOOL)validateNumber:(NSString*)number { BOOL res = YES; NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"]; int i = 0; while (i < number.length) { NSString * string = [number substringWithRange:NSMakeRange(i, 1)]; NSRange range = [string rangeOfCharacterFromSet:tmpSet]; if (range.length == 0) {  res = NO;  break; } i++; } return res;}

另外我們還有一種更加簡便的方法來實現這一目的:

首先宏定義

#define NUMBER @"0123456789"

接著

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBER] invertedSet]; NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; return [string isEqualToString:filtered];}

二、只能輸入純大小寫字母

和以上只能輸入純數字類似,實現起來簡單,只需要宏定義

#define LETTER @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"

然后實現

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:LETTER] invertedSet]; NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; return [string isEqualToString:filtered];}

三、大小寫字母和數字結合輸入

對照以上

#define LETTER_NUMBER @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

同樣道理具體能夠輸入那些內容如果輸入內容能夠一一列舉的話我們就可以通過define來設置了,實現起來超簡單。

限制只能輸入中文

在這里用到了觀察者

- (void)viewDidLoad { [super viewDidLoad]; _myTextField.delegate = self; [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:) name:UITextFieldTextDidChangeNotification object:_myTextField];}- (BOOL)textFieldShouldReturn:(UITextField *)textField{ [textField resignFirstResponder];  //過濾非漢字字符 textField.text = [self filterCharactor:textField.text withRegex:@"[^/u4e00-/u9fa5]"];  if (textField.text.length >= 4) {  textField.text = [textField.text substringToIndex:4];   } return NO;}- (void)textFiledEditChanged:(id)notification{ UITextRange *selectedRange = _myTextField.markedTextRange; UITextPosition *position = [_myTextField positionFromPosition:selectedRange.start offset:0];  if (!position) { //// 沒有高亮選擇的字  //過濾非漢字字符  _myTextField.text = [self filterCharactor:_myTextField.text withRegex:@"[^/u4e00-/u9fa5]"];    if (_myTextField.text.length >= 4) {   _myTextField.text = [_myTextField.text substringToIndex:4];  } }else { //有高亮文字  //do nothing }}- (NSString *)filterCharactor:(NSString *)string withRegex:(NSString *)regexStr{ NSString *searchText = string; NSError *error = NULL; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexStr options:NSRegularExpressionCaseInsensitive error:&error]; NSString *result = [regex stringByReplacingMatchesInString:searchText options:NSMatchingReportCompletion range:NSMakeRange(0, searchText.length) withTemplate:@""]; return result;}- (void)dealloc{ [[NSNotificationCenter defaultCenter] removeObserver:self];}

如果要限制輸入字符位數的話可以直接設置,這個實現上有很多種,最簡單的就是

- (void)textViewDidChange:(UITextView *)textView{ NSInteger number = [textView.text length]; if (number > 300) {  textView.text = [textView.text substringToIndex:300]; }}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 馆陶县| 吕梁市| 青田县| 石嘴山市| 宁河县| 合山市| 宿迁市| 望谟县| 遂宁市| 新巴尔虎右旗| 东丽区| 凤冈县| 马山县| 邻水| 雷波县| 蕉岭县| 景德镇市| 永泰县| 喀喇沁旗| 东辽县| 都兰县| 旺苍县| 洛浦县| 北票市| 鹤山市| 原平市| 五华县| 汉沽区| 建德市| 石阡县| 依安县| 旬邑县| 河东区| 上栗县| 高青县| 娄底市| 岳普湖县| 沂南县| 富蕴县| 长垣县| 安平县|