2011-11-07 41 views
10

我有一個奇怪的問題。我有3 UITextField s和一個UITextView。我可以從一個UITextField通過移動到下一個UITextFieldUITextView:文本從第二行文本視圖開始

- (BOOL) textFieldShouldReturn:(UITextField *)textField 
{ 
    NSInteger nextTag = textField.tag + 1; 
    //-- try to find next responde 
    UIResponder* nextResponder = [textField.superview viewWithTag:nextTag]; 

    if (nextResponder) 
    { 
     //-- found next responce ,so set it 
     [nextResponder becomeFirstResponder]; 
    } 
    else 
    { 
     [scrollView setContentOffset:CGPointMake(0, 0) animated:YES]; 
     //-- not found remove keyboard 
     [textField resignFirstResponder]; 
     return YES; 
    } 

    return YES; 
} 

所有直到它UITexView,然後我在文中觀點的二號線光標移動到位文本視圖的一號線的正常工作。

文本視圖取自IB。

文本視圖代碼:

- (void) textViewDidBeginEditing:(UITextView *)textView 
{ 
    optionalText.hidden = YES ; 
    [scrollView setContentOffset:CGPointMake(0, textView.center.y-100) animated:YES]; 
} 

- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{  
    // Any new character added is passed in as the "text" parameter 
    if ([text isEqualToString:@"\n"]) 
    { 
     // Be sure to test for equality using the "isEqualToString" message 
     [textView resignFirstResponder]; 
     [scrollView setContentOffset:CGPointMake(0, 0) animated:YES]; 

     // Return FALSE so that the final '\n' character doesn't get added  
     if ([[commentTxtView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0) 
     { 
      optionalText.hidden = NO ; 
      NSLog(@"Text View is null"); 
      [scrollView setContentOffset:CGPointMake(0, 0) animated:YES]; 
     } 

     return FALSE; 
    } 

    return TRUE; 
} 

它看起來像這樣:

enter image description here

可能是什麼問題呢?爲什麼它不是從第一行的文本視圖開始的?

+0

在這種情況下,scrollview是什麼?我會仔細檢查下面這行:[scrollView setContentOffset:CGPointMake(0,textView.center.y-100)animated:YES]; – Maggie

+0

你能告訴我們你在哪裏調用你的textFieldShouldReturn方法嗎?如果您在視圖生命週期的最初階段調用它,因爲您有多個textField,條件「if(nextResponder)」會自動將您發送到下一個textField。 – shinyuX

回答

29

我打賭你的textFieldShouldReturn:應該返回NO以防nextResponder是你的UITextField。現在你總是返回YES,這意味着鑰匙可能被傳遞給UITextView,然後插入新行。

+0

那麼我該如何解決它?其實我只是把[textView becomeFirstResponder]解決了它;在nextResponder不可用時在textFieldShouldReturn方法中。我知道它只是序列的問題,因爲我知道我的文本視圖是最後一個。 – Maulik

3

任何人在尋找雨燕2.0翻譯過來......

相反yourUIITextView.becomeFirstResponder()後返回truetextFieldShouldReturn,迴歸false

爲我工作!

希望這會有所幫助!

+0

謝謝。你節省了我的時間+1 – tobeiosdev