私がこの問題を解決した方法は、きれいではない方法でありますが、それは機能します。これを行うより良い方法があれば教えてください。
私はUIView
のカスタムのためにhitTest
をオーバーライドして、その下のUITableView
にタッチします。その後、UITableView
で私はtouchesBegan
、touchesMoved
などのジェスチャーを処理しています。私はまたUIView
にtouchesBegan
と呼んでいます。
このように、タッチは2つのビューで処理されます。 逆のことをしていない理由(UIView
のtouchesBegan
をUITableView
のtouchesBegan
と呼ぶ)は、UITableView
のジェスチャ認識機能が動作しないためです。
UIView
サブクラスお返事のためのhitTest
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
// tview is the UITableView subclass instance
CGPoint tViewHit = [tView convertPoint:point fromView:self];
if ([tView pointInside:tViewHit withEvent:event]) return tView;
return [super hitTest:point withEvent:event];
}
UITableView
サブクラスのtouchesBegan
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:touch.view];
// ....
// view is the UIView's subclass instance
[view touchesBegan:touches withEvent:event];
}
非常にクールな。私はしばらくして後に何か似て探していた。投稿していただきありがとうございます。 – riship89
私はこれが本当に好きです。サブビューのTouchesBeganなどを手動で呼び出すことで、間違った方法でやっていました。このメソッドは素晴らしい動作します! – Gandalf458