2014-07-10 4 views
1

나는 을 numberToAdd이라고하며 사용자에게 10에 추가 할 번호와 그 번호를 계산하는 UIButton을 입력하라는 메시지를 표시합니다. 그런 다음 합계를 표시하는 UILabel이 있습니다. 다시 누르면 UITextField의 텍스트를 지울 수 있습니까?

UILabel은 내가 그것을 탭 때를 삭제해야하는 UITextField를 다시 대신 삭제하는 코드를 작성하려면 어떻게 15

을 보여줍니다 나는 UITextField를 눌러 계산에 숫자 5를 입력 말 수동으로 5 번?

답변

0

을 생각할 수 이미 숫자를 계산 한 경우에만 터치합니다.

@property (nonatomic) BOOL calculateDone; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.calculateDone = false; 
} 

- (IBAction)calculate:(id)sender { 

    //sum label number and textField number 
    int sum = [self.label.text intValue] + [self.numberToAdd.text intValue]; 
    //set label 
    self.label.text = [NSString stringWithFormat:@"%d", sum]; 

    // sum done true 
    self.calculateDone = true; 
} 

- (void)textFieldDidBeginEditing:(UITextField *)textField { 

    if (textField == self.numberToAdd) 
    { 
     if (self.calculateDone) 
     { 
      self.numberToAdd.text = @""; 
      self.calculateDone = false; 
     } 
    } 
} 

옵션 3
취소 TextField 당신이 계산을 클릭하면 버튼

- (IBAction)calculate:(id)sender { 

    //sum label number and textField number 
    int sum = [self.label.text intValue] + [self.numberToAdd.text intValue]; 
    //set label 
    self.label.text = [NSString stringWithFormat:@"%d", sum]; 

    //reset textField 
    self.numberToAdd.text = @""; 

} 

만 오른쪽 TextField에 숫자를 원하기 때문에 당신은 또한 TextField에 입력 한 텍스트를 확인할 수 있습니까? .

@property (strong, nonatomic) NSString *urlRegEx; 
@property (strong, nonatomic) NSPredicate *urlRegExTest; 

//This Regex accepts negative and positive numbers 
self.urlRegEx = @"((-)?[0-9]*)"; 
self.urlRegExTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", self.urlRegEx]; 


- (IBAction)calculate:(id)sender { 

    // if text is a valid Number 
    if ([self.urlRegExTest evaluateWithObject:self.numberToAdd.text]) { 

     int sum = [self.label.text intValue] + [self.numberToAdd.text intValue]; 
     self.label.text = [NSString stringWithFormat:@"%d", sum]; 
    } 

} 

download an example code here 수 있습니다.

2

은 첫째로 당신은 당신이 작업을 감지 UITextFieldDelegate을 사용할 수 있습니다, 사용자가 버튼을 계산 도청 한 후, 사용자가 다시 TextField 도청 다음 때, 그 플래그를 설정해야, 숫자가 계산되지 않거나 표시 플래그를 가지고 있고 textfield을 취소한다 대답은 다음과 같이 :

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    if (isCalculated) { 
     textField.text = @""; 
     isCalculated = NO; 
    } 
} 
+0

답변이 도움이 되었다면 동의하십시오. –

2

당신은 BOOL 플래그가 isCal라고하자가 계산 된 경우에 당신이 알고에 대한 BOOL 플래그를 사용한다 TextField.First에 일반 텍스트를 얻을 수 UITapGestureRecognizer를 사용하거나 수 없습니다.

UITapGestureRecognizer *clearTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(clearTextField:)]; 

[self.textView addGestureRecognizer:clearTapRecognizer]; 

및 clearTextField 메소드는 다음 코드를 작성하십시오. 매번 텍스트 필드 당신이 그것을

- (void)textFieldDidBeginEditing:(UITextField *)textField { 

    if (textField == self.numberToAdd) { 
     self.numberToAdd1.text = @""; 
    } 
} 

옵션 2
취소 TextField 터치

옵션 1
지우기 : 나는 당신의 문제에 대한 세 가지 솔루션에

- (void)clearTextField:(UITapGestureRecognizer *)gestureRecognizer 
{ 
    if(isCal) 
    { 
     UITextView *_textView = (UITextView*) gestureRecognizer.view; 
     [email protected]""; 
     isCal=NO; 
    } 
} 
+0

어떻게됩니까? 어떤 오류? – iBhavin

+0

텍스트 필드에서도 작동합니다. – iBhavin

관련 문제