UITableView
に埋め込まれたUITextField
を編集するときに、UITableViewCell
のスクロールを無効にしようとしています。これは、編集時にセルがスクロールして見えなくなるのを防ぐためです(また、関連するセルの「リサイクル」の問題を回避するためです)。グーグルをしていると、誰かが明白なことを提案しているのを見ました。
tableView.scrollEnabled = NO:
あるいは
tableView.userInteractionEnabled = NO;
これは機能しません(少なくとも私にとっては... iPhone SDK 3.0、シミュレーターで試してみました)これらのプロパティをNOに設定し、プロパティがNOに設定されていることをログで確認しましたが、UITableViewはタッチに対して正常に応答し続けますイベント。そしてそれはまた楽しくスクロールします。ネット上の誰かがこれが実際に機能すると主張していなくても、私はそれほど心配しません。
私は何かが足りないのですか?または、スーパークラス(UIScrollView)で使用可能な機能を再び機能させるための唯一の代替サブクラス化UITableViewですか?
self.tableView.scrollEnabled = NO;
を使ってみましたか?
プレフィックスselfがないという理由だけで、Webからのコードが機能しないことをよく試しました。私はこれを問題なく試しました。
動的にオン/オフするときにこれが機能するかどうかはわかりません。オブジェクトを初期化するとき、少なくとも永続的な設定では機能します...
UITableViewController
を使用している場合は、tableView
プロパティもあり、キャストは必要ありません。これは私のために働きます:
self.tableView.scrollEnabled = NO;
それがあなたのために働くかどうか私に知らせてください。
ストーリーボードの選択解除スクロールを有効にしてみましたか?
私は試した:
[(UIScrollView*)[self view] setScrollingEnabled:NO];
そしてそれは機能しました([セルフビュー]は現在のビューコントローラーの私のビュー、つまりUITableViewです)。
問題は、警告が表示されることです。
「UIScrollView」は「-setScrollingEnabled:」に応答しない場合があります
正直なところ、プロパティは「scrollEnabled」ですが、それでも前述のコードで機能します。
したがって、物事を行うための「正しい」方法は次のようになります。
[(UIScrollView*)[self view] setScrollEnabled:NO];
なぜそれが逆に機能するのか、私を混乱させています...
私の場合、これらの答えはどれもうまくいきませんでした。すべてのscrollViewが無効になっているにもかかわらず、テーブルビューはスクロールし続けました。
最後に、 here で解決策を見つけました。キーボードが編集中のUITextViewを非表示にするたびに、UITableViewController
がこれを「私のために」行うと主張しています。
解決策は、UIViewController
ではなくUITableViewController
から継承し、必要なテーブル機能を自分で実装することです。
コンテンツが表示されていない場合にのみスクロールする場合は、次のように設定します。
yourTableview.alwaysBounceVertical = NO;
ここでコンテンツが表示されている場合、テーブルビューはスクロールしません