2 つのオブジェクトを使用して、Zip Code フィールドを持つアプリを作成していtextField
ます。このような、
ここでtextField
、コントロールが second に移動した後、最初に 5 文字を入力できるようにしますtextField
。2 番目のテキスト フィールドには 4 文字しか入力できず、それ以降は文字を受け付けません。
私はこのコードを試しました
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
if (textField == zipCode1TV) {
txtFieldSelected = @"zipCode1TV";
} else if(textField == zipCode2TV){
txtFieldSelected = @"zipCode2TV";
}
return YES;
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if ([txtFieldSelected isEqual: @"zipCode1TV"]) {
if (zipCode1TV.text.length>4) {
[zipCode2TV becomeFirstResponder];
}
}
if ([txtFieldSelected isEqual: @"zipCode2TV"]) {
int maxChar = 4;
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return (newLength <= maxChar);
}
return YES;
}
-(void)textFieldDidEndEditing:(UITextField *)textField
{
if ([txtFieldSelected isEqual: @"zipCode2TV"] ||[txtFieldSelected isEqual: @"zipCode2TV"]) {
zipCode =[NSString stringWithFormat:@"%@%@",zipCode1TV.text,zipCode2TV.text];
NSLog(@"%@",zipCode);
}
}
このコードを使用していくつかの問題を解決しましたが、最初に再入力できずtextField
、文字列zipCode
が実際の値を返しません。textField
コントロールが firstから second に移動するときに、1 つの値をスキップしますtextField
。