3 つのセルとそれぞれに 1 つの UISlider を持つ UITableView があります。パンして開くドロワー ジェスチャとスライダーの両方を許可するために、カスタム ジェスチャ ブロックは次のようになります。
[dcDrawer setGestureShouldRecognizeTouchBlock:^BOOL(MMDrawerController *drawerController, UIGestureRecognizer *gesture, UITouch *touch) {
return !([touch.view isKindOfClass:[UISlider class]]) && [gesture isKindOfClass:[UIPanGestureRecognizer class]];
}];
これは iOS 6 では正常に機能していましたが、iOS 7 では、いずれかのスライダーを使用しようとするたびに、最初のセルのスライダーに触れます。
問題がどこにあるのか完全に失われました。どんな助けでも大歓迎です。
編集:
ビュー全体のパンを無効にしましたが、スライダーの奇妙な動作がまだ発生しています。
編集2:
私はそれを考え出した。結局、MMDrawerViewController とは何の関係もありませんでした。スライダーの 1 つが移動されたとき、スライダーが入っているセルを取得し、関連するラベルを更新するメソッドを呼び出していました。iOS 7 の UITableViewCell の構造に新しいビューがあるため、常に行 0 を取得していました。この場合、追加の [[ ... ] スーパービュー] を追加する必要がありました。