2015-01-13 2 views
0

uitextfield에 들어가는 동안 19034 이하의 값을 허용해야합니다. 다음에 1에서 9 자까지 입력해서는 안됩니다.사용자가 uitextfield에 190보다 큰 값을 입력하는 것을 허용하지 않으려면 어떻게해야합니까?

아무에게도 이것에 관한 정보를 제공해 줄 수 있습니까? 나는 아래 코드를 시도했다. 그러나 그것은 190 이상을 허용하고있다.

if countElements(textField.text!) + countElements(string) - range.length < 4 
{ 
    var floatValue : Float = NSString(string: toString(textField.text)).floatValue 

    return floatValue < 190.0 
} 
+0

사용자가 190보다 큰 숫자를 입력하면 값을 190으로 바꿀 수 있습니까? if ([textField.text intValue]> 190) {textField.text = @ "190";} – TyloBedo

답변

2

어떻게하면 텍스트 필드의 대리자로 uitextfield가 포함 된 uiviewcontroller가 설정되는지 알 수 있습니다. 그런 다음이를 추가하십시오 :

//If number of characters needs to be less than 190 
- (BOOL)textField:(UITextField *)textField 
     shouldChangeCharactersInRange:(NSRange)range 
     replacementString:(NSString *)string 
{ 
    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
    if([newString length]>190){ 
     return NO; 
    } 
    return YES; 
} 

//If value needs to be less than 190 
- (BOOL)textField:(UITextField *)textField 
    shouldChangeCharactersInRange:(NSRange)range 
    replacementString:(NSString *)string 
{ 
    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
    if([newString intValue]>190){ 
     return NO; 
    } 
    return YES; 
} 
+0

이렇게하면 190 자 이하가 아닌 190 자로 제한됩니다. 명백한 잘못. – vikingosegundo

+1

사실이 아닙니다. 새 문자열이 190자를 초과하면 변경을 허용하지 않습니다. 그렇지 않으면 그것을 허용 할 것입니다. 당신은 틀리다 :) –

+0

그리고 내가 뭐라 말하고 있니? 질문을 다시 읽어야합니다. – vikingosegundo

0

UITextFieldTextDidChangeNotification을 사용하여 알림의 선택기에서 값 확인을 수행 할 수 있습니다. 다음은 Xcode에서 확인한 구현 예입니다.

#import "ViewController.h" 

@interface ViewController() <UITextFieldDelegate> 
@property (strong, nonatomic) IBOutlet UITextField *textField; 
@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.textField.delegate = self; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChange) name:UITextFieldTextDidChangeNotification object:nil]; 
} 

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
} 

- (void)textFieldDidChange 
{ 
    if ([self.textField.text length] > 3) { 
     NSString* subString = [self.textField.text substringWithRange:NSMakeRange(0, 3)]; 
     self.textField.text = subString; 
    } 
    if ([self.textField.text intValue] > 190) 
    { 
     NSString* subString = [self.textField.text substringWithRange:NSMakeRange(0, 2)]; 
     self.textField.text = subString; 
    } 
} 

@end 
+0

BTW는 OP를 사용하여 그것을하는 방법을 묻고있다. –

관련 문제