คลิกเหตุการณ์บน UIImageView โดยทางโปรแกรมใน ios


98

ฉันกำลังแสดงภาพจากรหัสนี่คือรหัส

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

ฉันต้องการจัดการเหตุการณ์การสัมผัสบน preArrowImage โดยทางโปรแกรม


นี่อาจเป็นของใช้stackoverflow.com/questions/9008975/…
Gaz_Edge

ตรวจสอบคำตอบนี้จะช่วยคุณได้http://stackoverflow.com/a/41328885/3177007
Mohamed Jaleel Nazir

คำตอบ:


254

วัตถุประสงค์ -c

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");
  }

SWIFT 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")
}

สำหรับ Swift 2 คุณควรแทนที่Selector("tapDetected")ด้วย:"tapDetected:"
58

โดยค่าเริ่มต้น singleTap.numberOfTapsRequired = 1, Happy Coding Thanks
Ravi

'let singleTap = UITapGestureRecognizer (เป้าหมาย: ตนเอง, การดำเนินการ: #selector (NavigationViewController.tapDetectedImage))'
Alex22

18

เพียงแค่เพิ่มUITapGestureในภาพ แต่จำไว้เพื่อให้มันUserInteraction ที่เปิดใช้งาน

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

6

ตอนนี้อยู่ใน Swift!

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 หรือคอนโทรลเลอร์อื่น ๆ


หลังจากเลือกหนึ่งในเครื่องมือจดจำท่าทางแล้วให้ลากไปยังตัวควบคุมของคุณ
ตอนนี้จะแสดงใน "Document outline" และส่วนหัวของ view controller xib

ไอคอนท่าทางในเอกสารออกบรรทัดและ xib
ลากท่าทางไปที่ UILable
ลากท่าทางไปที่ UILable


สร้างเมธอด (IBAction) ด้วยตนเองในไฟล์ส่วนหัว


สร้างวิธี IBAction ในไฟล์ส่วนหัว
ตอนนี้ลากจากตัวจัดการไปยังไอคอนท่าทางใน xib
เชื่อมโยงกับไอคอนท่าทาง


0

หาก UIImageView ของคุณเป็น IBOutlet ที่คุณได้รับจาก Storyboard หรือ Nib คุณสามารถเพิ่ม UIGestureRecognizer ลงในมุมมองภาพเปิดใช้งานการโต้ตอบกับผู้ใช้และเชื่อมต่อ IBAction กับเครื่องมือจดจำท่าทาง

สำหรับข้อมูลเพิ่มเติมตรวจสอบคำตอบของฉันเกี่ยวกับคำถามนี้: คุณสร้าง UIImageView บนกระดานเรื่องราวที่คลิกได้อย่างไร (รวดเร็ว)


0

นี่เป็นอีกทางเลือกหนึ่ง: โกง

ฉันหมายถึงคิดในด้านข้าง

ตั้งค่า UIImage ของคุณตามที่คุณต้องการครอบตัดขนาดพอดีทุกอย่าง

ซ้อนทับด้วย UIView (ขนาดตำแหน่ง ฯลฯ เท่ากัน)

ตั้งค่าพื้นหลังเป็น clearcolour และคลาสเป็น UIControl

ชี้จุดสัมผัสภายในเหตุการณ์ไปที่ตัวจัดการของคุณและ voila


ง่ายกว่า UIView: ใช้ปุ่มและลบข้อความ ;)
Neph

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")
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.