1

UITableView の各行に UITextField を配置するカスタム セルを作成しました。私がしたいのは、ユーザーがセル内の任意の場所を押したときに、特定の行の UITextField を有効にする (つまり、そのテキストフィールドでカーソルをアクティブにする) ことです。

これを行うには、次の方法があります。

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

     [_cell.textField setUserInteractionEnabled:TRUE];

}

ただし、これは機能していません。誰かが私が間違っていることを見ることができますか?

4

3 に答える 3

1

このコードを試してください:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

     [_cell.textField becomeFirstResponder];
}
于 2013-08-12T20:34:15.967 に答える
1

これを didSelectRowAtIndexPath: 内に配置すると、正しい軌道に乗っています。ただし、テキスト フィールドでユーザー インタラクションを有効に設定することは、ユーザーが試みた場合にオブジェクトとのインタラクションが許可されることを意味します。あなたはbecomeFirstResponderを探しています。

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
    [cell.textField becomeFirstResponder];
}
于 2013-08-12T20:34:34.180 に答える
1

この_celliVar とは何ですか? どこかに設定していますか?

あなたが達成しようとしているのはこれだと思います:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
     [cell.textField becomeFirstResponder];
}

このようにして、タップされた indexPath のセルを取得していることに注意してください。

また、参考までに、ブール値をYESorNOの代わりにtrueorとして使用するのは、objective-C のパターンfalseです。

于 2013-08-12T20:37:06.113 に答える