获取使用动态图像分割的图像的标识符

时间:2014-01-13 23:14:57

标签: ios objective-c cocoa-touch

我试图找到用户使用手势识别器点击的图像。 滚动视图以及图像视图都是动态创建的。

UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 100)];

scroll.pagingEnabled = YES;
int iPolaroidDimen = 200;

NSInteger numberOfViews = 10;
for (int i = 0; i < numberOfViews; i++) {
    CGFloat xOrigin = i * self.view.frame.size.width;

    UIImageView *polaroid = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"iconPol.png"]];

    polaroid.frame = CGRectMake(xOrigin+(self.view.center.x/2)-(iPolaroidDimen/10), (self.view.center.y/2), iPolaroidDimen, iPolaroidDimen);
    [scroll setShowsHorizontalScrollIndicator:NO];

    polaroid.userInteractionEnabled = TRUE;

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];
    singleTap.numberOfTapsRequired = 1;
    singleTap.numberOfTouchesRequired = 1;
    [polaroid addGestureRecognizer:singleTap];
    [polaroid setUserInteractionEnabled:YES];
    [polaroid setAccessibilityIdentifier:[NSString stringWithFormat:@"%@%@",@"ImageView",[NSString stringWithFormat:@"%d",i]]];

    [scroll addSubview:polaroid];

手势识别器

- (void)imageTapped:(UIGestureRecognizer *)gestureRecognizer{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle: @"Guess what?"
                                               message: @"An image was tapped"
                                              delegate: self
                                     cancelButtonTitle:@"Cancel"
                                     otherButtonTitles:@"OK",nil];


[alert show];
}

2 个答案:

答案 0 :(得分:1)

- (void)imageTapped:(UIGestureRecognizer *)gestureRecognizer {
    UIView *tappedView = gestureRecognizer.view;
}

答案 1 :(得分:0)

您可以指定10个图像中的每个图像,以便稍后访问它们。您只需要在包含所有10个图像的顶视图中添加点击手势,然后在您的方法中添加以下示例代码(我在其中为每个图像指定一个不同的名称,例如cat,cow等:]):

- (void)imageTapped:(UIGestureRecognizer *)gestureRecognizer
{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle: @"Guess what?"
                                                   message: @"An image was tapped"
                                                  delegate: self
                                         cancelButtonTitle:@"Cancel"
                                         otherButtonTitles:@"OK",nil];


    [alert show];

    CGPoint point = [gestureRecognizer locationInView:self.view];
    CGRect catRect = CGRectMake(self.cat.frame.origin.x, self.cat.frame.origin.y, self.cat.frame.size.width, self.cat.frame.size.height);
    CGRect cowRect = CGRectMake(self.cow.frame.origin.x, self.cow.frame.origin.y, self.cow.frame.size.width, self.cow.frame.size.height);

    if (CGRectContainsPoint(catRect, point)) {
        NSLog(@"I am a cat!");

    } else if (CGRectContainsPoint(cowRect, point)) {
        NSLog(@"I am a cow!");
    }
}