0

特定の CA レイヤーをタップすると、2 つの UITextField を動的に作成しました。最初のテキストフィールドを最初のレスポンダーにしました。最初のテキストフィールドにテキストを入力して完了を押すと、2番目のテキストフィールドを最初のレスポンダーにしたいです。これは、textFieldShouldReturn で私が行ったことです。

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if (titleField.returnKeyType== UIReturnKeyDone) {

        NSString *title = [textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        if (title.length>0 )
        {
            [self changeLayersTitle:title];
        }

        [dateField becomeFirstResponder];

    if (dateField.returnKeyType==UIReturnKeyDone)
    {
        NSString *date = [dateField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        if (date.length>0)
        {
            [self changeLayersDate:date];
        }
    }

        [dateField resignFirstResponder];
        [bgLayer removeFromSuperlayer];
        [titleField removeFromSuperview];
        [dateField removeFromSuperview];


    }
    return NO;
}

ここで、最初のテキストを入力した後に完了を押すと、両方のテキストフィールドが閉じられ、bt がキーボードを表示します。それで、私は何が欠けているのか、間違っていたのか、それともどこかに置く必要があるのでしょうか。私を助けてください。

4

2 に答える 2

2

returnKeyTypeテキスト フィールドのプロパティを比較した理由がわかりません。テキスト フィールドが等しいかどうかを比較する必要があります。最初のテキスト フィールドでリターン キーが押された場合は、2 番目のテキスト フィールドを新しいレスポンダーにします。

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if (textField == titleField) {
        [dateField becomeFirstResponder];
    }
    else if (textField == dateField) {
        // Return button pressed on 2nd field. Do something
    }
    return YES;
}
于 2012-11-12T07:58:27.993 に答える
0

完了ボタンのコールバック メソッドで、2 番目のテキスト フィールドをファーストレスポンダーとして設定することはできませんか?

最初のテキスト フィールドでは、ResignFirstResponder を使用する必要はありません。

于 2012-11-12T07:54:46.047 に答える