UITextField を UITableViewcell の contentView として追加しようとしています。それは機能し、フィールドにはフォーカスがありますが、detailTextLabel は 10 ピクセル上にスライドします。ここでの取引は何ですか?二次的な質問として、インラインで編集可能な UITableViewCell を作成するより良い方法はありますか?
これが私のコードです。テーブルビューセルをダブルタップした結果、これを実行しようとしています。次のようにタップされた実際のセルを取得します。
CGPoint swipeLocation = [recognizer locationInView:self.tableView];
NSIndexPath *swipedIndexPath = [self.tableView indexPathForRowAtPoint:swipeLocation];
UITableViewCell *swipedCell;
次に、次のようにテキストフィールドを追加しようとします:
swipedCell = [self.tableView cellForRowAtIndexPath:swipedIndexPath];
NSInteger indent = swipedCell.indentationWidth;
UITextField * newText = [[UITextField alloc] initWithFrame:CGRectMake(indent, swipedCell.contentView.frame.origin.y, swipedCell.contentView.frame.size.width, swipedCell.contentView.frame.size.height)];
newText.font = swipedCell.textLabel.font;
newText.text = swipedCell.textLabel.text;
newText.textColor = [UIColor grayColor];
newText.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
swipedCell.textLabel.text = @"";
[swipedCell addSubview:newText];
[newText becomeFirstResponder];
あなたのコードを適用すると、テキストと詳細ラベルの両方がセルの中央に配置されることを除いて、あなたのものとまったく同じです。