Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在使用多个UIView时单击事件UIView_Ios_Objective C_Events_Uiview_Onclick - Fatal编程技术网

Ios 在使用多个UIView时单击事件UIView

Ios 在使用多个UIView时单击事件UIView,ios,objective-c,events,uiview,onclick,Ios,Objective C,Events,Uiview,Onclick,我是IOS开发的新手,在onclick事件中搜索UIView,我发现这段代码工作得非常好。但它不调用特定的UIView,因为我使用多个UIView,并且希望分别在所有UIView上添加事件,而这段代码调用任一UIView的handleSingleTap onclick。请帮忙 - (void)viewDidLoad { [super viewDidLoad]; UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer a

我是IOS开发的新手,在onclick事件中搜索UIView,我发现这段代码工作得非常好。但它不调用特定的UIView,因为我使用多个UIView,并且希望分别在所有UIView上添加事件,而这段代码调用任一UIView的handleSingleTap onclick。请帮忙

- (void)viewDidLoad
{
[super viewDidLoad];
UITapGestureRecognizer *singleFingerTap =
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[self.view addGestureRecognizer:singleFingerTap];
}
- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer {
CGPoint location = [recognizer locationInView:[recognizer.view superview]];

NSLog(@"Clicked");
}
您可以创建UITapgestureRecognitor并将其添加到要单击的视图中。 您还可以在每个视图上设置标记属性,以确定单击了哪个视图

例如:

    UITapGestureRecognizer *singleFingerTap1 =
    [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
    view1.tag = 1;
    [view1 addGestureRecognizer:singleFingerTap1];
    UITapGestureRecognizer *singleFingerTap2 =
    [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
    view2.tag = 2;
    [view2 addGestureRecognizer:singleFingerTap2];
    //..and so on

    - (void)handleSingleTap:(UITapGestureRecognizer *)recognizer {
        UIView *viewClicked = recognizer.view;

        NSLog(@"Clicked: %d", viewClicked.tag);
    }
另一种解决方案是在主视图中添加一个手势识别器,该视图包含其他视图,如您发布的内容和handleSingleTap:方法检查该点是否在视图内:

BOOL isPointInsideView1 = [view1 pointInside:location withEvent:nil];
BOOL isPointInsideView2 = [view1 pointInside:location withEvent:nil];

但是,当一个视图覆盖另一个视图时,ic可能会失败。

谢谢,这是一个很好的工作方式,只是我的程序中的一个问题我现在有3个UIView mover、flipper、grower,它为flipper和grower工作,但不为mover工作。。。在我看来有什么问题吗?