2012-06-15 62 views
1

我有4個文本字段水平。每個textFiled將只允許四個字符。如果用戶輸入四個字符,則應將焦點更改爲下一個文本字段,無需任何用戶交互。通過使用下面的代碼,我可以切換到下一個textFiled,但只能從鍵盤輸入任何字符。我的要求是在輸入四個字符後自動關注下一個字段。請幫助我。提前致謝。uiresponder下一個textfield成爲keyEvent後的第一個響應者

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

if (range.location >= 4) { 
    textField.text = string;   
    UIResponder* nextResponder = [textField.superview viewWithTag:(textField.tag + 1)]; 
    if (nextResponder) {   
     [textField resignFirstResponder];    
     [nextResponder becomeFirstResponder];   
    }   
    return NO; 
}  
return YES; 

}

回答

0
//try to this code 


- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    if ([[textField text] length] + [string length] - range.length > 4) { 

    textField.text = string;   
    UIResponder* nextResponder = [textField.superview viewWithTag:(textField.tag + 1)]; 
    if (nextResponder) {   
     [textField resignFirstResponder];    
     [nextResponder becomeFirstResponder];   
    } 

    return YES; 
} 

希望這將幫助你

+0

感謝所有回覆..但抱歉不工作。 @iApple是你的權利,我需要與textFields相同的方式。 –

+0

@Kumar做一件事..你只是從你的代碼中刪除返回No ...試着請讓我知道.... – Abhishek

+0

感謝您的建議。它開始工作,但我面臨更多問題,如textField.tag值爲0,1,2,3。但是,使用鍵盤textField導航鍵入時發生0-> 2-> 3(1缺少0-> 2)。我深知這背後的原因..謝謝。 –

1

您可以使用這樣的事情在這個方法:

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

    if(theTextField == firstField) 
    { 
     [secondField becomeFirstResponder]; 
     return YES; 
    } 

    if(theTextField == secondField) 
    { 
     [thirdField becomeFirstResponder]; 
     [theTextField resignFirstResponder]; 
     return YES; 
    } 

    if(theTextField == thirdField) 
    { 
     [thirdField becomeFirstResponder]; 
     [theTextField resignFirstResponder]; 
     return YES; 
    } 
    [theTextField resignFirstResponder]; 
    return YES; 
} 
+0

您好,感謝您的快速回復。通過使用我的代碼,我可以在輸入4個字母后在textFields之間切換。問題出在點擊第五個字母后焦點改變爲第二個textFiled,但第五個字母不顯示在第二個文本textField中,因爲它作爲用戶事件切換到下一個。我的要求是,如果用戶點擊第五個字母,它應該顯示在第二個textField中。謝謝你。 –

+0

我認爲阿布舍克的答案是正確的。那是我發生的下一個答案。 –

+1

這真棒回答! – Genevios

0

嘗試更換此

if (range.location >= 4) 

if (range.location >= 3) 
+0

並返回YES。 – lnafziger

相關問題