Fare clic su Evento in UIImageView a livello di codice in ios


95

Sto visualizzando un'immagine dal codice qui è il codice

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

Voglio gestire l'evento touch su preArrowImage a livello di programmazione.


Questo può essere di qualche utilità stackoverflow.com/questions/9008975/...
Gaz_Edge

Risposte:


250

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

per Swift 2 dovresti sostituire Selector("tapDetected")con:"tapDetected:"
datayeah

Per impostazione predefinita singleTap.numberOfTapsRequired = 1, Happy Coding Thanks
Ravi

'let singleTap = UITapGestureRecognizer (target: self, action: #selector (NavigationViewController.tapDetectedImage))'
Alex22

18

Basta aggiungere un UITapGesturesull'immagine ma ricordarsi di abilitare la sua UserInteraction .

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

6

Ora in 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

Swift 3

Su UIImageView abilitare 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

Utilizzo dello storyboard con la visualizzazione nel controller di visualizzazione.
può essere ImageView, UIView, UILabel, TextField o un altro controller


Dopo aver selezionato uno dei riconoscitori di gesti, trascinalo sul controller.
Ora verrà visualizzato in "Struttura documento" e intestazione del controller di visualizzazione xib.

Icona del gesto nel documento fuori linea e xib
Trascina il gesto su UILable
Trascina il gesto su UILable


Crea manualmente il metodo (IBAction) nel file di intestazione


crea il metodo IBAction nel file di intestazione
Ora trascinalo dal gestore all'icona dei gesti in xib
Collegalo con l'icona del gesto


0

Se il tuo UIImageView è un IBOutlet ottenuto da uno storyboard o da un pennino, puoi aggiungere un UIGestureRecognizer alla visualizzazione dell'immagine, abilitare l'interazione dell'utente e connettere un'IBAction al riconoscimento dei gesti.

Per maggiori informazioni controlla la mia risposta su questa domanda: Come fare un UIImageView sullo storyboard cliccabile (veloce)


0

Ecco un'altra opzione: Cheat.

Voglio dire, pensa lateralmente.

Imposta il tuo UIImage come vuoi, ritagliato, adattato all'aspetto, qualunque cosa.

Sovrapponilo con una vista UIV (dimensioni uguali, posizione ecc.)

Imposta lo sfondo su clearcolour e la classe su UIControl.

Punta il ritocco all'interno dell'evento al tuo gestore e voilà.


Ancora più semplice di una vista UIV: usa un pulsante ed elimina il testo. ;)
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")
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.