UITextFieldで入力状態(キーボード)を制御する
UITextFieldでの入力状態をon/offするには以下のメッセージを使う。
キーボードを出す
becomeFirstResponder
キーボードを消す
resignFirstResponder
リターンキーでの制御
リターンキーが押された時に、次のTextFieldを入力状態にするなら、UITextFiledDelegateの - (BOOL)textFieldShouldReturn:(UITextField *)textField を使って、対象のTextFieldにbecomeFirstResponderを送る。
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
switch (textField.tag) {
case 1:
[[self.view viewWithTag:2] becomeFirstResponder];
return NO;
case 2:
[textField resignFirstResponder];
return NO;
default:
return YES;
}
}
例の場合、tagの値が1のtextfieldでリターンを押すと次のtextfieldが入力可能となり、そこでさらにリターンを押すと入力が終了してキーボードが閉じる。
ボタン制御
両方のTextFieldに1文字以上の文字が入力されているときにボタンがonになるような制御。 メールのアカウント設定はこの動作。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if(textField.tag == 1){
NSUInteger newLength = [textField.text length] + [string length] - range.length;
_useridinput = (newLength > 0);
}else if(textField.tag == 2){
NSUInteger newLength = [textField.text length] + [string length] - range.length;
_passwdinput = (newLength > 0);
}
self.btnLogin.enabled = (_useridinput && _passwdinput);
return YES;
}