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浏览器窗口来响应用户。
我正在考虑从UIImageView继承。 UITapGestureRecognizer的一部分是困扰我的东西。因为触摸是一件很好的事情,所以我永远无法像UIButton那样处理水龙头。 (有人在类似主题的评论中这样说)这就是为什么我认为我宁愿有一个imageView和一个按钮。 – Daniel 2012-03-08 19:59:00
您应该可以使用UIGestureRecognizerState UIGestureRecognizerStateEnded获得触感。您可以决定从UIView中获得更复杂一点的子类,这将桥接图像创建并为您创建一个UIbutton(UIView是将其图像和按钮保存在其边界内的父类)。同上,但现在有一个按钮和一些工作。绝对值得考虑保持逻辑封装。 – Sandoze 2012-03-08 20:05:57
最后结束了使用UITapGestureRecognizer。我在使用两个框架时遇到了问题,我正在“移动”错误的框架,这就是按钮无法使用的原因。感谢您的帮助! – Daniel 2012-03-09 01:15:26