私はあるイベントビューからUITableView
にイベントを転送しようとしています。しかし、私は問題に遭遇しました。図において慣性スクロールを生成するために、UITableViewへの前方へのタッチイベント
問題を説明するためのプロトタイプ図です。下半分の白い部分は通常のUITableView
です。黄色の表示はUIView
で、hitTest:withEvent:
を使用してUITableView
の中央にタッチします。赤色の表示はUIButton
です。
目標は、上下のパンニングタッチを黄色のビューから下部のUITableView
に転送することです。しかし、赤色のタップはUIButton
です。
私は2つの主なアプローチを試みましたが、どちらも問題があります。
最初の方法は、UITableView
のcontentOffset
を設定するために使用できる黄色の図にUIPanGestureRecognizer
を追加することです。問題は、このアプローチではテーブルビューの慣性スクロールが機能しないことです。
黄色の表示でhitTest:withEvent:
を使用してタッチを転送する方法があります。
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if([self.button_red pointInside: [self convertPoint:point toView:self.button_red] withEvent:event]) {
return self.button_red;
} else {
return [self.view_table hitTest:CGPointMake(self.view_table.width/2.0,self.view_table.height/2.0) withEvent:event];
}
}
hitTest:withEvent:
は、黄色の表示でタッチが開始されたときにのみ呼び出されます。つまり、赤いビューでドラッグが開始されるたびに、ドラッグをテーブルビューに転送しません。それで十分ではありません。
黄色の表示からUITableView
にパンのジェスチャーを転送することは可能ですか?赤いボタンを押したままにする方法と、赤いボタンでドラッグを開始する方法がありますか?これを何とかするには、黄色の表示でtouch event methodsを無効にする必要がありますか?慣性スクロールを維持しながらこれを行う方法はありますか?
UITableViewでtableHeaderViewとしてyellowViewを設定できませんか? –
これは良い考えですが、refreshControlは画面の上部に表示されます。私は、黄色のビューの下にrefreshControlを保持したいと思います。 –
私たちが何かを試してみたら、refreshControlも上に終わりますか? [tableView addSubview:yellowView]; [tableView setContentInset:CGPointMake(0、CGRectGetHeight(yellowView.frame))]; –