0

私はUIViewControllerを持っています。および 3 UIView 内部のタッチを個別に検出する方法。

3 つのクラスがあり、UIViewController にオブジェクトを追加しました

そして、このメソッドを各クラスに配置します。オブジェクト(UIView)に触れる必要があり、イベントに個別に応答します

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

}

例:

  • view1 NSLog(@"I Touched View 1");

    view2 NSLog(@"I Touched View 2");

    view3 NSLog(@"I Touched View 3");

ありがとう!!

4

1 に答える 1

4

3 つのビューすべてが viewController のビューの子孫である場合、次のコード スニペットを使用できます。

for (UITouch *t in touches) {
    CGPoint p = [t locationInView:self.view];
    UIView *v = [self.view hitTest:p withEvent:event];
    NSLog(@"touched view %@", v);
}

編集

UIViewControllerわかりました、サブビューのタッチ検出用の ( への) エントリ ポイントは 1 つだけだと思います。あなたが言ったように、サブビューごとにクラスがある場合は、すでに問題を解決しています。各メソッドNSLog(@"touched..")内にコードを配置する以外に何もする必要はありません。touchBegan:withEvent:

例えば

@implementation FirstSubview
.
.
-( void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"I touched View 1");
}
.
.
@end

:UIViewControllerUIResponder(つまり、 から継承UIResponder) であるため、投稿した最初のソリューションを使用することもできます。

于 2013-06-24T21:23:40.740 に答える