0

首先感谢您的帮助。AFNetworking UIGestureRecognizer里面setCompletionBlockWithSuccess

我试图用AFNetworking下载几个图像,问题是,当我尝试在块成功部分内添加手势识别器并且完成后出现错误。

这是我的代码。

- (void)loadPictures { 

    NSArray *listItems = [[_dictForData objectForKey:@"imgs"] componentsSeparatedByString:ITEM_SEPARATOR]; 

    NSLog(@" == Num Images %d", [listItems count]-1); 

    NSMutableArray *imgNames= [[NSMutableArray alloc] init]; 

    for(int i=0;i<[listItems count]-1;i++) 
    { 
     NSString *nameImage = [listItems[i] componentsSeparatedByString:TAG_SEPARATOR][1]; 
     NSLog(@" == Name Image %@", nameImage); 
     [imgNames addObject: nameImage]; 
     NSLog(@"== %@", [imgNames objectAtIndex:i]); 
    } 

    // Setup the array of UIImageViews 
    NSMutableArray *imgArray = [[NSMutableArray alloc] init]; 

    for(NSString *name in imgNames) { 
     NSString *string = [NSString stringWithFormat:@"%@%@%@%@%@", SERVER, URL_FILES,[_dictForData objectForKey:@"id"],URL_IMAGES_HI,name]; 
     NSURL *url = [NSURL URLWithString:string]; 
     NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url]; 


     AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; 
     requestOperation.responseSerializer = [AFImageResponseSerializer serializer]; 
     [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 
      NSLog(@"Response: %@", responseObject); 
      UIImageView *tempImageView; 
      tempImageView = [[UIImageView alloc] init]; 
      tempImageView.contentMode = UIViewContentModeScaleAspectFit; 
      tempImageView.image = responseObject; 
      [imgArray addObject:tempImageView]; 
      UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected)]; 
      singleTap.numberOfTapsRequired = 1; 
      [tempImageView setUserInteractionEnabled:YES]; 
      [tempImageView addGestureRecognizer:singleTap]; 
      if ([imgArray count] == [listItems count]-1) { 
       //CGSize pageSize = self.scrollView.frame.size; // scrollView is an IBOutlet for our UIScrollView 
       NSUInteger page = 0; 
       NSUInteger widthPicture = 100; 
       NSUInteger heightPicture = 100; 

       for(UIView *view in imgArray) { 

        [self.scrollView addSubview:view]; 
        // This is the important line 
        //view.frame = CGRectMake(pageSize.width * page++ + 10, 0, pageSize.width - 20, pageSize.height); 
        view.frame = CGRectMake(widthPicture * page++, 0, widthPicture - 5, heightPicture); 
        // We're making use of the scrollView's frame size (pageSize) so we need to; 
        // +10 to left offset of image pos (1/2 the gap) 
        // -20 for UIImageView's width (to leave 10 gap at left and right) 
       } 

       //self.scrollView.contentSize = CGSizeMake(pageSize.width * [imgArray count], pageSize.height); 
       self.scrollView.contentSize = CGSizeMake((widthPicture + 5) * [imgArray count], 100); 
      } 

     } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
      NSLog(@"Image error: %@", error); 
     }]; 
     [requestOperation start]; 


    } 
} 

-(void)tapDetected{ 
    NSLog(@"single Tap on imageview"); 

} 

编辑:

该错误是一个EXC_BAD_ACCESS(码= 1,地址= 0x7000000C)当我轻按ImageView的。

我需要轻拍所创建的图像并在imageview上显示单击。

我在做什么错了?或者我怎么解决它?

在此先感谢和抱歉,我Inglish

+1

请提供错误信息! – 2014-10-04 10:41:56

+0

我刚刚编辑它,谢谢。 – 2014-10-04 10:57:08

+0

你没有添加UIImageView到任何视图.. !!! [myAwesomeView addSubview:tempImageView]; – 2014-10-04 11:14:45

回答

0

,而不是将您的UIImageView到imgArray [imgArray addObject:tempImageView]; 直接添加从环[self.scrollView addSubview:tempImageView];
评论它。我完全理解你正在使用循环为CGRectMake
还是测试你的代码和它的工作完全
我删除了这条线if ([imgArray count] == [listItems count]-1) {

UIImageView *tempImageView; 
    tempImageView = [[UIImageView alloc] init]; 
    tempImageView.contentMode = UIViewContentModeScaleAspectFit; 
    tempImageView.image = responseObject; 
    [imgArray addObject:tempImageView]; 
    [self.view addSubview:tempImageView]; 

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected)]; 
    singleTap.numberOfTapsRequired = 1; 
    [tempImageView setUserInteractionEnabled:YES]; 
    [tempImageView addGestureRecognizer:singleTap]; 
+0

对不起,以后我会在所有操作完成后添加它。我再次编辑抱歉。 – 2014-10-04 11:22:28