Klicken Sie in iII programmgesteuert auf Ereignis in UIImageView

94

Ich zeige ein Bild aus Code hier ist der Code

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

Ich möchte das Berührungsereignis auf dem preArrowImage programmgesteuert behandeln.

Sumit Patel
quelle
Dies kann von Nutzen sein stackoverflow.com/questions/9008975/…
Gaz_Edge
Überprüfen Sie diese Antwort wird Ihnen helfen http://stackoverflow.com/a/41328885/3177007
Mohamed Jaleel Nazir

Antworten:

249

Ziel 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
quelle
für Swift 2 sollten Sie ersetzen Selector("tapDetected")durch:"tapDetected:"
datayeah
Standardmäßig singleTap.numberOfTapsRequired = 1, Happy Coding Danke
Ravi
'let singleTap = UITapGestureRecognizer (Ziel: self, Aktion: #selector (NavigationViewController.tapDetectedImage))'
Alex22
18

Fügen Sie einfach ein UITapGestureBild hinzu, aber denken Sie daran, die Benutzerinteraktion zu aktivieren .

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

Jetzt 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")
}
Sakiboy
quelle
4

Swift 3

Aktivieren Sie in 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!)
            }
        }
    }
Mohamed Jaleel Nazir
quelle
3

Verwenden des Storyboards mit Ansicht im Ansichts-Controller.
Die Ansicht kann ImageView, UIView, UILabel, TextField oder ein anderer Controller sein


Nachdem Sie einen der Gestenerkenner ausgewählt haben, ziehen Sie ihn auf Ihren Controller.
Jetzt wird es in "Dokumentumriss" und in der Kopfzeile von View Controller xib angezeigt.

Gestensymbol in Dokumentausgabezeile und xib
Ziehen Sie die Geste auf UILable
Ziehen Sie die Geste auf UILable


Manuelle Erstellung (IBAction) -Methode in der Header-Datei


IBAction-Methode in Header-Datei erstellen
Ziehen Sie sie nun vom Handler zum Gesten-Symbol in xib
Verknüpfen Sie es mit dem Gestensymbol

Subhash
quelle
0

Wenn es sich bei Ihrer UIImageView um ein IBOutlet handelt, das Sie von einem Storyboard oder einer Schreibfeder erhalten, können Sie der Bildansicht einen UIGestureRecognizer hinzufügen, die Benutzerinteraktion aktivieren und eine IBAction mit dem Gestenerkenner verbinden.

Weitere Informationen finden Sie in meiner Antwort auf diese Frage: So machen Sie eine UIImageView im Storyboard anklickbar (schnell)

xxtesaxx
quelle
0

Hier ist eine weitere Option: Cheat.

Ich meine, denke seitlich.

Richten Sie Ihr UIImage so ein, wie Sie es möchten, beschnitten, passgenau, was auch immer.

Überlagern Sie dies mit einem UIView (gleiche Abmessungen, Position usw.)

Stellen Sie den Hintergrund auf clearcolour und die Klasse auf UIControl ein.

Richten Sie die Ausbesserung innerhalb des Ereignisses auf Ihren Handler und voila.

Raki
quelle
Noch einfacher als ein UIView: Verwenden Sie eine Schaltfläche und löschen Sie den Text. ;)
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")
}
Olivier MATROT
quelle