0

グループ化された静的テーブルビューを使用して、iPhoneアプリに入力フォームを実装しようとしています。

私はdidSelectRowAtIndexPath怠惰にテキストフィールドを作成し、関連するセルに追加するために使用しています。

スクリーンショット

私の問題は、それbecomeFirstResponderが期待どおりに動作していないことです。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.section == 0)
{
    if(!self.contactNameTextField)
    {
        self.contactNameTextField = [[UITextField alloc] initWithFrame:CGRectMake(93, 14, 200, 20)];
        self.contactNameTextField.backgroundColor = [UIColor clearColor];
        self.contactNameTextField.font = [UIFont boldSystemFontOfSize:15];
        self.contactNameTextField.keyboardType = UIKeyboardTypeEmailAddress;
        [self.contactNameCell addSubview:self.contactNameTextField];
    }

    [self.contactNameTextField becomeFirstResponder];

}

if(indexPath.section == 1)
{
    if(!self.contactEmailTextField)
    {
        self.contactEmailTextField = [[UITextField alloc] initWithFrame:CGRectMake(93, 14, 200, 20)];
        self.contactEmailTextField.backgroundColor = [UIColor clearColor];
        self.contactEmailTextField.font = [UIFont boldSystemFontOfSize:15];
        self.contactEmailTextField.keyboardType = UIKeyboardTypeEmailAddress;
        [self.contactEmailCell addSubview:self.contactNameTextField];
    }

    [self.contactEmailTextField becomeFirstResponder];

}

コードは期待どおりにステップスルーします。

最初にセクション0をタップすると、名前のテキストフィールドがファーストレスポンダーになります。次にセクション1をタップすると、メールのテキストフィールドがファーストレスポンダーになります。次にセクション0をタップするbecomeFirstResponderと、名前のテキストフィールドで呼び出されても、応答しません。

また、最初にセクション1をタップするbecomeFirstResponderと、メールのテキストフィールドで呼び出されても応答しません。

お知らせ下さい

4

2 に答える 2

0

他のテキストフィールドのbecomeFirstResponderを呼び出す前に、他のテキストフィールドのresignFirstResponderを呼び出してみてください。交換

[self.contactNameTextField becomeFirstResponder];

[self.contactEmailTextField resignFirstResponder];
[self.contactNameTextField becomeFirstResponder];

セクション1についても同じようにします。resignFirstResponderを呼び出す前に、textFieldがnilでないかどうかを確認します。

于 2012-11-19T12:41:29.063 に答える
0

問題は解決しました。self.contactNameTextFieldでエラーを2回切り取って貼り付けてください。

于 2012-11-20T11:43:40.153 に答える