5
我找實現輸入掩碼的方法來的UITextField像這樣:實現輸入掩碼來的UITextField
主要特點:
- 顯示佔位符,空字符至光標右側
- 禁止對於當前光標位置不正確字符的輸入(例如,第一個字符只能是拉丁字符,第二字符只能是一個數字)
- 禁止選擇,剪切並粘貼
- 禁止設置光標位置(用戶將只能添加一個新的字符或刪除最後一個)
我找實現輸入掩碼的方法來的UITextField像這樣:實現輸入掩碼來的UITextField
主要特點:
我能得到這一切與一個子類的UITextField工作。您可能想要將這些委託方法移動到ViewController中,並在那裏設置自定義的TextField委託。爲了這個例子,更容易在一個班級中向你展示一切。顯然,你將不得不調整允許滿足你需求的字符集。
#import "TextField.h"
@interface TextField()<UITextFieldDelegate>
@end
@implementation TextField
-(instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.delegate = self;
}
return self;
}
- (UITextPosition *)closestPositionToPoint:(CGPoint)point{
UITextPosition *beginning = self.beginningOfDocument;
UITextPosition *end = [self positionFromPosition:beginning offset:self.text.length];
return end;
}
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(paste:)
|| action == @selector(select:)
|| action == @selector(selectAll:)
|| action == @selector(cut:)){
return NO;
}
return [super canPerformAction:action withSender:sender];
}
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (range.location == 0 && [string rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet]].location == NSNotFound) {
return NO;
}else if (range.location == 1 && [string rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]].location == NSNotFound){
return NO;
}
return YES;
}
@end
,可能是情侶貴點有用的:HTTP://stackoverflow.com/questions/2388448/re-apply-currency-formatting-to-a-uitextfield-on-a-change-event/ 2919532#2919532 – casillas