日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS实现经典登录页面,手机号自动格式化

發布時間:2023/12/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS实现经典登录页面,手机号自动格式化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

iOS實現經典登錄頁面,手機號自動格式化


核心

#define RGB(r,g,b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1]@implementation LJPhoneTextField- (instancetype)initWithFrame:(CGRect)frame {self = [super initWithFrame:frame];if (self) {self.leftViewMode = UITextFieldViewModeAlways;self.clearButtonMode = UITextFieldViewModeWhileEditing;self.backgroundColor = [UIColor whiteColor];self.textColor = RGB(51,51,51);[self addTarget:self action:@selector(reformatAsPhoneNumber:) forControlEvents:UIControlEventEditingChanged];}return self; } - (instancetype)initWithCoder:(NSCoder *)coder {self = [super initWithCoder:coder];if (self) {[self addTarget:self action:@selector(reformatAsPhoneNumber:) forControlEvents:UIControlEventEditingChanged];}return self; } -(void)reformatAsPhoneNumber:(UITextField *)textField {/*** 判斷正確的光標位置*/NSUInteger targetCursorPostion = [textField offsetFromPosition:textField.beginningOfDocument toPosition:textField.selectedTextRange.start];NSString *phoneNumberWithoutSpaces = [self removeNonDigits:textField.text andPreserveCursorPosition:&targetCursorPostion];if([phoneNumberWithoutSpaces length]>11) {/*** 避免超過11位的輸入*/[textField setText:_previousTextFieldContent];textField.selectedTextRange = _previousSelection;return;}NSString *phoneNumberWithSpaces = [self insertSpacesEveryFourDigitsIntoString:phoneNumberWithoutSpaces andPreserveCursorPosition:&targetCursorPostion];textField.text = phoneNumberWithSpaces;UITextPosition *targetPostion = [textField positionFromPosition:textField.beginningOfDocument offset:targetCursorPostion];[textField setSelectedTextRange:[textField textRangeFromPosition:targetPostion toPosition:targetPostion]];} /*** 除去非數字字符,確定光標正確位置** @param string 當前的string* @param cursorPosition 光標位置** @return 處理過后的string*/ - (NSString *)removeNonDigits:(NSString *)string andPreserveCursorPosition:(NSUInteger *)cursorPosition {NSUInteger originalCursorPosition =*cursorPosition;NSMutableString *digitsOnlyString = [NSMutableString new];for (NSUInteger i=0; i<string.length; i++) {unichar characterToAdd = [string characterAtIndex:i];if(isdigit(characterToAdd)) {NSString *stringToAdd = [NSString stringWithCharacters:&characterToAdd length:1];[digitsOnlyString appendString:stringToAdd];}else {if(i<originalCursorPosition) {(*cursorPosition)--;}}}return digitsOnlyString; }/*** 將空格插入我們現在的string 中,并確定我們光標的正確位置,防止在空格中** @param string 當前的string* @param cursorPosition 光標位置** @return 處理后有空格的string*/ - (NSString *)insertSpacesEveryFourDigitsIntoString:(NSString *)string andPreserveCursorPosition:(NSUInteger *)cursorPosition{NSMutableString *stringWithAddedSpaces = [NSMutableString new];NSUInteger cursorPositionInSpacelessString = *cursorPosition;for (NSUInteger i=0; i<string.length; i++) {if(i>0){if(i==3 || i==7) {[stringWithAddedSpaces appendString:@" "];if(i<cursorPositionInSpacelessString) {(*cursorPosition)++;}}}unichar characterToAdd = [string characterAtIndex:i];NSString *stringToAdd = [NSString stringWithCharacters:&characterToAdd length:1];[stringWithAddedSpaces appendString:stringToAdd];}return stringWithAddedSpaces; }#pragma mark - UITextFieldDelegate -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {_previousSelection = textField.selectedTextRange;_previousTextFieldContent = textField.text;if(range.location==0) {if(string.integerValue >1){return NO;}}return YES; }@end

開源地址
https://gitee.com/johnson__save_admin/ljphone-text-field

總結

以上是生活随笔為你收集整理的iOS实现经典登录页面,手机号自动格式化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。