2011-12-22 10 views
0

キーボードが表示されたときにUITableViewをスクロールして、テキストフィールドがキーボードで覆われないようにしたいと思います。私はtableViewとcontentInsetなどをスクロールする方法を知っています。私はスクロールする距離を計算するのに問題があります。UITableViewCellのUITextFieldの元の値

キーボードの寸法は(UIKeyboardDidShowNotification)です。しかし、私は、編集中のテキストフィールドに有用な原点値を得ることができません。 UITextFieldの起点はtextFieldDidBeginEditingにはなりません。値は編集中のtextFieldに関係なく同じです。 textField.superview.originも役に立ちません。

編集中のtextFieldの起源について、どのようにして有用な値を得ることができますか?

この値をキーボードの高さと共に使用して、スクロールする距離を決定します。

答えて

2

個人的には、テーブルビューのフレームを変更してキーボードによって隠されないようにすることです(キーボードフレームを見て、それに基づいてテーブルビューフレームを変更することができます)。次に、セルが表示されるようにscrollToRowAtIndexPath:atScrollPosition:animated:を使用してテーブルビューをスクロールします。

このようにして、UITableViewは、実際のコンテンツのオフセットがどのようなものであるべきかを処理します。

+0

いいですね。どのindexPathをスクロールするかを決定するのに好ましい方法は?私は、 'textFieldDidBeginEditing'と' didRotateFromInterfaceOrientation'でtableViewをスクロールすると思います。 – SundayMonday

1

行の高さとヘッダーの高さがすべて同じ場合は、単純に行の値を取得し、これに行の高さを掛けて正しい起点を得ることができます。可変行の高さ/セクションヘッダーを使用している場合は、このアプローチでは少し複雑になります。

MattJGallowayが投稿したばかりの2番目のアプローチは、tableviewのフレームを変更し、tableView自体をスクロールさせることです。これはまた私の好ましいアプローチでもあります。

関連する問題