2016-03-30 11 views
0

Senaryo ben Scrollview içine ekledik ve daha sonra her ImageView ama sadece ilki imageview ateşleme olayı eklenen tapgesture ImageView olması.dokunun jest içeride olay ateş değil scrollview, sadece ilk imageview vurma hareketi çalışan?

aşağıdaki denediniz: döngüsünde imageview

extension UIImageView { 
    public func openMenu() { 
    let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:Selector("handleTapGesture:")) 
    //mImg.addGestureRecognizer() 
    self.addGestureRecognizer(tapGestureRecognizer) 
    print("open") 
    } 
} 

2. eklendi musluk jest

1. düzenlendi Uzatma (yön imageview Scrollview aynı şekilde tapgesture eklendi eklenir)

//the loop go till all images will load 
for var index = 0; index < imagesName.count; index++ { 
    let mImg: UIImageView = UIImageView()   
    let pDict = homePageProductArr[index] as NSDictionary 

    //Create a UIVIEW 
    let containerView:UIView = UIView(frame: CGRect(x: 0, y: 0, width: 80, height: 100)) 
    let nameLabel:UILabel = UILabel(frame:CGRect(x: xOffset+20, y: 85, width: 100, height: 20)) 
    nameLabel.text = (pDict.objectForKey("CategoryName") as! String) 
    nameLabel.font = UIFont(name: "Helvetica Neue", size: 10.0) 
    containerView.addSubview(nameLabel) 

    let tapMenuCategoryImageTGR = UITapGestureRecognizer(target: self, action: Selector("handleTapGesture:")) 
    containerView.addGestureRecognizer(tapMenuCategoryImageTGR) 

    // make the imageview object because in scrollview we need image 
    mImg.frame = CGRectMake(5 + xOffset, 0, 80, 80) 
    // the offset represent the values, used so that topleft for each image will 
    // change with(5+xOffset, 0)and the bottomright(160, 110) 
    //mImg.image = UIImage(named: imagesName[index]) 
    mImg.imageFromUrl(imagesName[index]) 
    //mImg.imageFromServerURL(imagesName[index]) 
    //Creating Circular Image 
    //mImg.layer.borderWidth = 1 
    mImg.layer.masksToBounds = true 
    mImg.layer.borderColor = UIColor.whiteColor().CGColor 
    mImg.layer.cornerRadius = mImg.frame.height/2 
    mImg.clipsToBounds = false 
    mImg.openMenu() 
    mImg.userInteractionEnabled = true 
    mImg.addGestureRecognizer = tapMenuCategoryImageTGR 

    // The image will put on the img object 
    images.insert(mImg, atIndex: index) 
    //Put the img object at the images array which is mutable array 
    scrollview.contentSize = CGSizeMake(120 + xOffset, 110) 
    //scroll view size show after 125 width the scroll view enabled 
    scrollview.addSubview(images[index] as! UIView) 
    //set images on scroll view 
    xOffset += 100 
} 

Lütfen önerilerinizi üzerinde paylaşın.

+0

Bunun için önce tapMenuCategoryImageTGR'yi denediniz mi? – Max

cevap

0

Son olarak "" için ImageView düğmeye ekleyerek ve arka plan rengi açık ve başlık yaparak çözüldü: İşte

olduğunu Kod Parçacığı:

//print(mDict.objectForKey("ImageURL")) 
    //var scrollWidth: Int = 120 
    scrollview.contentSize = CGSizeMake(120.0, 80.0) 
    var xOffset: CGFloat = 5 
    //the loop go till all images will load 
    for index in 0 ..< imagesName.count { 

     let mImg: UIImageView = UIImageView() 
     //set placeholder image 
     mImg.image = UIImage(named: "lazyload_icon.png") 
     let pDict = homePageProductArr[index] as NSDictionary 

     //Create a UIVIEW 
     let containerView:UIView = UIView(frame: CGRect(x: 0, y: 0, width: 80, height: 120)) 
     let nameLabel:UILabel = UILabel(frame:CGRect(x: xOffset+20, y: 95, width: 100, height: 20)) 
     nameLabel.text = (pDict.objectForKey("CategoryName") as! String) 
     nameLabel.font = UIFont(name: "Helvetica Neue", size: Constant().HomeLabelFontSize) 
     nameLabel.textColor = UIColor.colorWithHexString(Constant().HomeLabelHexColorCode) 
     //set line and wrap text 
     nameLabel.numberOfLines = 0 
     nameLabel.sizeToFit() 
     containerView.addSubview(nameLabel) 
     containerView.userInteractionEnabled = false 

     // make the imageview object because in scrollview we need image 
     mImg.frame = CGRectMake(xOffset , 0, 90, 90) 
     // the offset represent the values, used so that topleft for each image will 
     // change with(5+xOffset, 0)and the bottomright(160, 110) 
     //mImg.image = UIImage(named: imagesName[index]) 
     mImg.imageFromUrl(imagesName[index]) 
     //mImg.imageFromServerURL(imagesName[index]) 
     //Creating Circular Image 
     mImg.layer.masksToBounds = true 
     mImg.layer.borderColor = UIColor.whiteColor().CGColor 
     mImg.layer.cornerRadius = mImg.frame.height/2 
     mImg.clipsToBounds = false 
     mImg.userInteractionEnabled = false 


     // The image will put on the img object 
     images.insert(mImg, atIndex: index) 
     // Put the img object at the images array which is mutable array 
     scrollview.contentSize = CGSizeMake(120 + xOffset, 110) 
     //scroll view size show after 125 width the scroll view enabled 
     containerView.addSubview(images[index] as! UIView) 
     scrollview.addSubview(containerView)//images[index] as! UIView) 
     // set images on scroll view 
     xOffset += 100 

     //Adding button to fire event 
     let touchButton:UIButton = UIButton() 
     touchButton.frame = mImg.frame 
     touchButton.backgroundColor = UIColor.clearColor() 
     touchButton.tag = index 
     touchButton.addTarget(self, action: Selector("touchCategoryAction:"), forControlEvents: UIControlEvents.TouchUpInside) 
     touchButton.setTitle("", forState: UIControlState.Normal) 
     scrollview.addSubview(touchButton) 
     scrollview.bringSubviewToFront(touchButton) 
Bunun yerine UIButton kullanabilirsiniz UIImageView kullanmanın
0

ve düğmeye arka plan görüntüsü ayarlamak ve başlığı "" olarak ayarlayın. Sonra UIImageView ve UIButton hem eklemeniz gerekmez yoktur. UIButton kolayca UIScrollView üzerinde Tapped olayı var olabilir.

+0

Tek sorun, birden çok çözüme sahip. En iyisini seçmek zorundayız1. @ShobhakarTiwari – shubham

+0

tam soru anlamanız gerekir, onun tek bir görüntüye dokunma hakkında değil, zaten sorgunun kendisi yapılır, aksine çok sayıda resim görünümü yatay kaydırma, yani diğer sorun. –

+0

Evet haklısınız, yatay olarak kayan birden çok resim görünümündeydi. Birden fazla tuşun etiketlerini kolayca ayarlayabilirsiniz. ve musluğun nerede olduğunu kontrol et. – shubham

0

Bu UIScrollView bir sorun değildir. Jest'i tek bir manzaraya kullanabiliriz. sorunun Başka bir çözüm

  1. aşağıda- verilir Sen küresel musluk jest beyan etmek zorunda. Bu adımda

    var singleTap:UITapGestureRecognizer! 
    
  2. biz UIImageView alır ve bunun üstüne jest eklemek bir işlev oluşturun.

    func setGesture(img_View:UIImageView) { 
         singleTap = UITapGestureRecognizer.init(target: self, action: Selector("resignResponder")) 
         singleTap.numberOfTapsRequired = 1 
        view.addGestureRecognizer(singleTap) 
    

    }

  3. Şimdi jest eylem oluşturmak.

Bu

func resignResponder() { 

} 

sorunun çözümü olarak üç adımlardır. Her resim için "setGesture" öğesini arayın. Her görüntü için musluğunu başarıyla tanıyabilirsiniz.

İlgili konular