आयोस में UIImageView प्रोग्रामेटिक रूप से इवेंट पर क्लिक करें


95

मैं एक छवि दिखा रहा हूँ यहाँ कोड से कोड है

UIImageView *preArrowImage =[[UIImageView alloc]init ];
preArrowImage.image =[UIImage imageNamed:@"arrowprev.png"];
preArrowImage.frame = CGRectMake(20, 60, 10, 30);
[self.view addSubview:preArrowImage];

मैं प्रोग्राम को पूर्वअमेरिका पर स्पर्श घटना को संभालना चाहता हूं।


यह कुछ इस्तेमाल किया जा सकता है stackoverflow.com/questions/9008975/…
Gaz_Edge

इस उत्तर की जाँच करें आप http://stackoverflow.com/a/41328885/3177007
मोहम्मद जलील नज़ीर

जवाबों:


250

उद्देश्य सी

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

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

स्विफ्ट 4.2 / 5

let preArrowImage : UIImageView // also give it frame
let singleTap = UITapGestureRecognizer(target: self, action: #selector(tapDetected))
preArrowImage.isUserInteractionEnabled = true
preArrowImage.addGestureRecognizer(singleTap)

//Action
@objc func tapDetected() {
    print("Imageview Clicked")
}

स्विफ्ट 2 के लिए आपको प्रतिस्थापित करना चाहिए Selector("tapDetected"):"tapDetected:"
datayeah

डिफ़ॉल्ट रूप से singleTap.numberOfTapsRequired = 1, हैप्पी कोडिंग साभार
रवि

'' सिंगलटैप = यूआईटैपग्योर्योर रिकॉग्निज़र (लक्ष्य: स्वयं, क्रिया: #selector (NavigationViewController.tapDetectedImage)) ''
एलेक्स

18

बस UITapGestureछवि पर जोड़ें , लेकिन इसके UserInteraction को सक्षम करने के लिए याद रखें ।

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self 
    action:@selector(singleTapGestureCaptured:)];
    [preArrowImage addGestureRecognizer:singleTap];
    [preArrowImage setMultipleTouchEnabled:YES];
    [preArrowImage setUserInteractionEnabled:YES];

6

अब स्विफ्ट में!

let singleTap = UITapGestureRecognizer(target: self, action: Selector("tapDetected"))
singleTap.numberOfTapsRequired = 1

preArrowImage.userInteractionEnabled = true
preArrowImage.addGestureRecognizer(singleTap)


//Action
func tapDetected() {
    println("Single Tap on imageview")
}

4

स्विफ्ट 3

UIImageView पर UserInterAction सक्षम करें

 override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesEnded(touches, with: event)

        if let touch = touches.first {
            if touch.view == self.imgVwPostPreview { //image View property

                //Do your actions
                //self.delegate?.didClickOnCellImageView(indexPath: self.cellIndexPath!)
            }
        }
    }

3

दृश्य नियंत्रक में दृश्य के साथ कहानी बोर्ड का उपयोग करना।
दृश्य ImageView, UIView, UILabel, TextField या अन्य नियंत्रक हो सकता है


जेस्चर पहचानकर्ता में से एक का चयन करने के बाद इसे अपने नियंत्रक पर खींचें।
अब यह "डॉक्यूमेंट की रूपरेखा" और व्यू कंट्रोलर xib के हेडर में प्रदर्शित होगा।

दस्तावेज़ आउट लाइन और xib में जेस्चर आइकन
इशारा को UILable तक खींचें
इशारा को UILable तक खींचें


हेडर फ़ाइल में मैन्युअल रूप से (IBAction) विधि बनाएं


हेडर फ़ाइल में IBAction मेथड बनाएं
अब इसे हैंडलर से xib में जेस्चर आइकन पर खींचें
इसे जेस्चर आइकन से लिंक करें


0

यदि आपका UIImageView एक IBOutlet है, जो आपको Storyboard or Nib से मिलता है, तो आप छवि दृश्य में एक UIGestureRecognizer जोड़ सकते हैं, उपयोगकर्ता इंटरैक्शन को सक्षम कर सकते हैं और जेबीएशन को जेस्चर पहचानकर्ता से कनेक्ट कर सकते हैं।

अधिक जानकारी के लिए इस प्रश्न पर मेरे उत्तर की जाँच करें : आप स्टोरीबोर्ड पर यूआईआईएमएज व्यू कैसे क्लिक कर सकते हैं (स्विफ्ट)


0

यहाँ एक और विकल्प है: धोखा।

मेरा मतलब है, बाद में सोचें।

अपना UIImage सेट करें कि आप कैसे चाहते हैं, फसली, पहलू फिट, जो भी हो।

इसे UIView (समान आयाम, स्थिति आदि) के साथ ओवरले करें

Clearcolour के लिए पृष्ठभूमि सेट करें, और वर्ग UIControl के लिए।

अपने हैंडलर और वॉइला को इवेंट के अंदर टच अप को इंगित करें।


UIView से भी आसान: एक बटन का उपयोग करें और पाठ को हटा दें। ;)
नेफ

0

Xamarin.iOS

UIImageView preArrowImage; // also give it frame
var singleTap = new UITapGestureRecognizer(TapDetected);
singleTap.ShouldReceiveTouch -= TapGesture_ShouldReceiveTouch;
singleTap.ShouldReceiveTouch += TapGesture_ShouldReceiveTouch;
preArrowImage.UserInteractionEnabled = true;
preArrowImage.AddGestureRecognizer(singleTap)

bool TapGesture_ShouldReceiveTouch(UIGestureRecognizer recognizer, UITouch touch)
{
    return true;
}

void TapDetected(UITapGestureRecognizer tapGestureRecognizer)
{
    print("Imageview Clicked")
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.