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.



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

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];

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

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!)
            }
        }
    }

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


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)


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.


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")
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.