UIImageView链接到网址时点击

问题描述:

我有某种图像滑块显示一些促销图像('促销)。我用了我在这附近找到的一个片段。它通过使用带有框架的UIImageView填充scrollView并使用UIScrollViewDelegate方法和PageControl方法向左和向右移动来工作。这是代码的一部分设置页面:UIImageView链接到网址时点击

-(void)setupPage{ 
    [scrollView setDelegate:self]; 
    [self.scrollView setBackgroundColor:[UIColor blackColor]]; 
    [scrollView setCanCancelContentTouches:NO]; 

    scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
    scrollView.clipsToBounds = YES; 
    scrollView.scrollEnabled = YES; 
    scrollView.pagingEnabled = YES; 

    //cargar fotos 
    CGFloat cx = 0; 
    for (id row in promosArray) { 
     NSLog(@"imagen %@", [row url]); 
     UIImage *image = [row foto]; 
     //image = [image imageRotatedByDegrees:90.0f]; 
     UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
     CGRect rect = imageView.frame; 
     rect.size.height = image.size.height; 
     rect.size.width = image.size.width; 
     rect.origin.x = ((scrollView.frame.size.width - image.size.width)/2) + cx; 
     rect.origin.y = ((scrollView.frame.size.height - image.size.height)/2); 

     imageView.frame = rect; 
     [imageView setUserInteractionEnabled:YES]; 

     [scrollView addSubview:imageView]; 
     cx += scrollView.frame.size.width; 
    } 
    self.pageControl.numberOfPages = [promosArray count]; 
    [scrollView setContentSize:CGSizeMake(cx, [scrollView bounds].size.height)]; 

    [cargando setHidden:YES]; 
    [scrollView setHidden:NO]; 
    [pageControl setHidden:NO]; 

} 

我从promosArray的信息,至极为promo类型的对象与此头阵列

@interface Promo : NSObject 
@property (strong, nonatomic) UIImage *foto; 
@property (strong, nonatomic) NSURL *url; 

-(id) initWithUIImage: (UIImage *) f andNSURL: (NSURL *) u; 
@end 

所以促销只是一个对象,用于保存它应该显示的UIImage以及它在点击时链接到的URL。

所以我的问题是如何使UIImages,当'摸进去'打开一个Safari浏览器窗口与相应的URL? 我试图添加一个按钮与一个子视图相同的框架,我只有1个按钮(或他们都在同一个地方)

这个想法使我最复杂的是链接每个按钮与它的通讯网址。

谢谢!

考虑让你的照片它自己的类从UIImageView继承。

这样你就可以像在你的迭代器中一样设置它,但也可以交给NSUrl(使它成为照片的责任而不是客户端代码)。不仅如此,您可以通过自动添加UITapGestureRecognizer来扩展此新类(F)类的逻辑,并通过打开Safari浏览器窗口来响应用户。

+0

我正在考虑从UIImageView继承。 UITapGestureRecognizer的一部分是困扰我的东西。因为触摸是一件很好的事情,所以我永远无法像UIButton那样处理水龙头。 (有人在类似主题的评论中这样说)这就是为什么我认为我宁愿有一个imageView和一个按钮。 – Daniel 2012-03-08 19:59:00

+0

您应该可以使用UIGestureRecognizerState UIGestureRecognizerStateEnded获得触感。您可以决定从UIView中获得更复杂一点的子类,这将桥接图像创建并为您创建一个UIbutton(UIView是将其图像和按钮保存在其边界内的父类)。同上,但现在有一个按钮和一些工作。绝对值得考虑保持逻辑封装。 – Sandoze 2012-03-08 20:05:57

+0

最后结束了使用UITapGestureRecognizer。我在使用两个框架时遇到了问题,我正在“移动”错误的框架,这就是按钮无法使用的原因。感谢您的帮助! – Daniel 2012-03-09 01:15:26