自動サイズ変更可能なUITextViewを含むOwnerDrawnElementを使用して作成されたカスタムセルがあります。テキストが変更された場合は、適切なレイアウトの再描画とセルの高さの再計算が必要です。問題は、開いたキーボードをどのように保持するかです。UITableView内にメソッドがあります-ReloadRowsは、実際に何らかの形で私を助けてくれました。ファーストレスポンダーで辞任できないので、自分のセルで呼び出すことはできません。しかし、別のセルを呼び出すと、セルのサイズが希望どおりに変更されますが、別のセルを再描画する必要はありません。それで、UITableViewをリレーアウトしてデータをリロードしないためにどのメソッドが呼び出されるのだろうか?!上下にスクロールすると、セルが表示され、高さが再計算されるときに、同じメソッドが呼び出される可能性があります。
標準のSetNeedsDisplay()、SetNeedsLayout()、ReloadInputViews()、LayoutSubviews()を試しましたが、同じことはしませんでした。多分私はそれらをどういうわけか異なって使う必要があります。セルおよびテーブルビューオブジェクト全体に対してそれらを呼び出そうとしました。
ReloadRowsメソッドを調べたところ、いくつかのAPIが呼び出されていることがわかりました。
Messaging.void_objc_msgSendSuper_IntPtr_int(base.SuperHandle、UITableView.selReloadRowsAtIndexPathsWithRowAnimation_、nSArray.Handle、(int)withRowAnimation);
したがって、データをリロードせずにテーブルビューに各セルの高さを再計算させる方法もありません。
それを手伝ってくれませんか。