Klik Acara di UIImageView secara terprogram di ios

95

Saya menampilkan gambar dari kode di sini adalah kodenya

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

Saya ingin menangani acara sentuh di preArrowImage secara terprogram.

Sumit Patel
sumber
Ini mungkin beberapa kegunaan stackoverflow.com/questions/9008975/…
Gaz_Edge
Periksa jawaban ini akan membantu Anda http://stackoverflow.com/a/41328885/3177007
Mohamed Jaleel Nazir

Jawaban:

251

Tujuan-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")
}
Vivek Sehrawat
sumber
untuk Swift 2 Anda harus mengganti Selector("tapDetected")dengan:"tapDetected:"
datayeah
Secara default singleTap.numberOfTapsRequired = 1, Selamat Coding Terima kasih
Ravi
'let singleTap = UITapGestureRecognizer (target: self, action: #selector (NavigationViewController.tapDetectedImage))'
Alex22
18

Cukup tambahkan a UITapGesturepada gambar tetapi ingat untuk membuat UserInteraction Diaktifkan .

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

Sekarang di 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")
}
Sakiboy
sumber
4

Cepat 3

Di UIImageView, aktifkan 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!)
            }
        }
    }
Mohamed Jaleel Nazir
sumber
3

Menggunakan papan cerita dengan view in view controller.
tampilan mungkin ImageView, UIView, UILabel, TextField atau pengontrol lainnya


Setelah memilih salah satu pengenal gerakan, seret ke pengontrol Anda.
Sekarang akan ditampilkan dalam "Garis besar dokumen" dan header dari pengontrol tampilan xib.

Ikon isyarat dalam garis dokumen keluar dan xib
Tarik isyarat ke UILable
Tarik isyarat ke UILable


Buat metode (IBAction) secara manual di file header


membuat metode IBAction di file header
Sekarang seret dari handler ke ikon isyarat di xib
Tautkan dengan ikon gerakan

Subhash
sumber
0

Jika UIImageView Anda adalah IBOutlet yang Anda dapatkan dari Storyboard atau Nib, Anda dapat menambahkan UIGestureRecognizer ke tampilan gambar, mengaktifkan interaksi pengguna, dan menghubungkan IBAction ke pengenal isyarat.

Untuk info lebih lanjut, periksa jawaban saya untuk pertanyaan ini: Bagaimana Anda membuat UIImageView di storyboard dapat diklik (cepat)

xxtesaxx
sumber
0

Berikut opsi lain: Cheat.

Maksud saya, pikirkan secara lateral.

Siapkan gambar UII Anda seperti yang Anda inginkan, crop, aspek fit, apa pun.

Overlay ini dengan UIView (dimensi yang sama, posisi, dll.)

Setel latar belakang ke warna yang jelas, dan kelas ke UIControl.

Arahkan touch up inside event ke pawang Anda, dan voila.

Raki
sumber
Bahkan lebih mudah daripada UIView: Gunakan tombol dan hapus teks. ;)
Nef
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")
}
Olivier MATROT
sumber