İOS'ta programlı olarak UIImageView'da Etkinlik'e tıklayın


96

Koddan bir resim gösteriyorum işte kod

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

PreArrowImage'daki dokunma olayını programlı olarak işlemek istiyorum.



Bu yanıtı kontrol etmenize yardımcı olacak http://stackoverflow.com/a/41328885/3177007
Mohamed Jaleel Nazir

Yanıtlar:


253

Amaç-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 için Selector("tapDetected")"tapDetected:"
şununla

Varsayılan olarak singleTap.numberOfTapsRequired = 1, Mutlu Kodlama Teşekkürler
Ravi

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

18

UITapGestureGörüntüye bir eklemeniz yeterlidir , ancak UserInteraction'ı Etkinleştirmeyi unutmayın .

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

6

Şimdi Swift'de!

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

Hızlı 3

On UIImageView UserInteraction etkinleştirmek

 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

Görünüm denetleyicisinde görünümle storyboard kullanma.
görünüm ImageView, UIView, UILabel, TextField veya başka bir denetleyici olabilir


Hareket tanıyıcılardan birini seçtikten sonra onu kumandanıza sürükleyin.
Şimdi "Belge ana hatları" nda ve xib görünüm denetleyicisinin başlığında görüntülenecektir.

Belge dış çizgisindeki ve xib'deki hareket simgesi
Hareketi UILable'a sürükleyin
Hareketi UILable'a sürükleyin


Başlık dosyasında el ile (IBAction) yöntemi oluştur


başlık dosyasında IBAction yöntemi oluştur
Şimdi onu işleyiciden xib'deki hareket simgesine sürükleyin
Hareket simgesiyle bağlayın



0

İşte başka bir seçenek: Hile.

Demek istediğim, yanal düşün.

Arayüzünüzü istediğiniz gibi ayarlayın, kırpın, en boy oranına uyun.

Bunu bir UIView ile kaplayın (eşit boyutlar, konum vb.)

Arka planı temiz renge ve sınıfı UIControl'e ayarlayın.

İçerideki dokunuş olayını işleyicinize yöneltin ve işte.


UIView'den bile daha kolay: Bir düğme kullanın ve metni silin. ;)
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")
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.