2012-03-08 88 views
0

我有某種圖像滑塊顯示一些促銷圖像('促銷)。我用了我在這附近找到的一個片段。它通過使用帶有框架的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個按鈕(或他們都在同一個地方)

這個想法使我最複雜的是鏈接每個按鈕與它的通訊網址。

謝謝!

回答

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