バックグラウンド:
マスター/詳細ビュー分割ビューコントローラーがあります。詳細テーブルビューでは、顧客のコメントを表示するUITextViewを1つだけ含むセルを持つ静的テーブルビューがあります。
マスタービューで顧客名をタップすると、コメント情報が読み取られ、詳細ビューのviewWillAppearのUITextViewのテキストに設定されます。同時に、UITextViewは次のコードでサイズ変更されます。
CGRect frame;
frame = self.detailCustomerCommentUITextView.frame;
frame.size.height = [self.detailCustomerCommentUITextView contentSize].height;
self.detailCustomerCommentUITextView.frame = frame;
[self.tableView reloadData];
このセルの高さも変更されます。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
CGFloat height = 30.0;
if (indexPath.section==3&&indexPath.row==1)
{
height = MAX(self.detailCustomerCommentUITextView.frame.size.height, 30.0);
}else if (indexPath.section == 0 && indexPath.row == 0)
{
height = 55.0;
}else if (indexPath.section == 1 && indexPath.row == 0)
{
height = 47.0;
}
return height;
}
問題を再現する手順:
コメントテキストが短い顧客(Customer Short)を初めてタップしたとき。サイズ変更されたフレームは次のとおりです。(CGRect)frame = origin =(x = 67、y = -6)size =(width = 568、height = 32)
次の後にブレークポイントでこの値を取得しました:self.detailCustomerCommentUITextView.frame = frame;
次に、heightForRowAtIndexPathで、同じ高さを取得しました。
(CGFloat)高さ= 32
これは良さそうですが、アプリではUITextViewにコメントが表示されませんでした。
すでにデバッグモードでこれをチェックしたので、このテキストビューのテキストは空ではないと確信しています。
次に、次のブレークポイントで同じ顧客をもう一度タップします。
frame = self.detailCustomerCommentUITextView.frame;
私は(CGRect)フレーム=原点=(x = 67、y = -6)サイズ=(幅= 568、高さ= 10)を見ました
これは、最後のフレームのサイズが高さ「32」になった後、UITextViewのサイズが高さ「10」に変更されることを意味します。
次に、コードが実行されます
frame.size.height = [self.detailCustomerCommentUITextView contentSize].height;
self.detailCustomerCommentUITextView.frame = frame;
高さが再び32に設定されているのを見ました。しかし、今回はすべてが完璧です。コメントテキストが表示され、UITextViewのサイズが変更されました。
次に、上記の手順を繰り返しましたが、すべてが正常で、UITextViewのサイズが変更されていないことがわかりました。
質問の概要:
顧客のShortを最初にタップしたとき、UITextViewが高さ32に正常にサイズ変更された後、高さ10にサイズ変更されるのはなぜですか?
シングルステップのデバッグを使用しましたが、フレームを変更する他のコードが見つかりません。
あなたの親切な助けに大いに感謝します。