2010-02-01 78 views
0

我試圖在輸入文本本身時將文本保存在文本字段中。 因爲我使用的代碼如下:UITextField顯示問題

here eventTextField,eventPlaceTextField,wineryTitleLabel,vintageTextField是文本字段。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 

    if(textField == eventTextField) 
    { 
     printf("\n ===============in ths didchange %s",[eventTextField.text UTF8String]); 
     event.eventName = eventTextField.text; 
    } 
    else if(textField == eventPlaceTextField) 
    { 
     event.eventPlace = eventPlaceTextField.text; 
    } 
    else if(textField == wineryTitleLabel) 
    { 
     event.eventWinery = wineryTitleLabel.text; 
    } 
    else if(textField == vintageTextField) 
    { 
     int vintageVal = [vintageTextField.text intValue]; 
     if([vintageTextField.text length] == 4 || [vintageTextField.text length]==0) 
     { 
      event.eventVintage = vintageVal; 
     } 
     else 
     { 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"!!!MESSAGE !!!" message:@"Enter the Vintage in the format 'YYYY'" 
                  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
      [alert show]; 
      [alert release]; 
      return NO; 
     } 
    } 
    return YES; 
} 


- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 

    NSInteger nextTag = textField.tag + 1;// Try to find next responder 
    UIResponder* nextResponder = [textField.superview viewWithTag:nextTag]; 
    if (nextResponder) 
    { 
     // Found next responder, so set it. 
     [nextResponder becomeFirstResponder]; 
    } 
    else 
    { 
     if(textField == eventTextField) 
     { 
      [eventPlaceTextField becomeFirstResponder]; 
      [textField resignFirstResponder]; 
     } 
     else if(textField == eventPlaceTextField) 
     { 
      [wineryTitleLabel becomeFirstResponder]; 
      [textField resignFirstResponder]; 
     } 
     else if(textField == wineryTitleLabel) 
     { 
      [vintageTextField becomeFirstResponder]; 
      [textField resignFirstResponder]; 
     } 
    } 

    if(textField == vintageTextField) 
    { 

     [self setViewMovedUp:NO]; 
     [textField resignFirstResponder]; 
    } 

    return YES; 
} 

的問題是這裏的時候,我eneterd文本字段中的文本防爆:您好,當視圖中的文本字段向上移動文本在texfield變得像Hell.the最後一個字母的文字不顯示。

任何人的幫助很受讚賞。

+0

你能格式化一下嗎? 4個空格給出了代碼格式。 這是所有文本字段或只有一個問題。 – 2010-02-01 05:54:42

+0

是dis是所有文本字段的相同問題。 – monish 2010-02-01 06:39:52

+1

只是一個提示 - 使用'isEqualTo:'比較文本字段而不是簡單的'=='。 – Eimantas 2010-02-01 06:47:09

回答

1

這裏有幾件事情:

當您指定,

event.eventName = eventTextField.text; 

的shouldChangeCharactersInRange內:方法,你會改變之前分配的文本字段的值。所以當你輸入「Hello」時,event.eventName將會得到「Hell」。我懷疑你在其他地方將eventTextField的值設置爲event.eventName。

從代碼的外觀來看,我懷疑你能夠在vintageTextField中成功輸入一個值。即使用戶想要輸入有效的年份號碼,當他要輸入文本字段中的第二個數字時,他也會遇到警報。

作爲尖端,

[vintageTextField becomeFirstResponder]; 
[textField resignFirstResponder]; 

第二個步驟是多餘的,因爲在第一步驟將確保使vintageTextField第一響應者之前。

+0

是的,你是絕對正確的。我已經完成了你所說的所有事情。請根據你的建議修改代碼。非常感謝你的幫助。 – monish 2010-02-01 08:19:04