Клацніть Подія на UIImageView програмно в ios


95

Я відображаю зображення з коду, ось цей код

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

Я хочу обробляти подію дотику на preArrowImage програмно.


Це може бути якийсь - то користь stackoverflow.com/questions/9008975 / ...
Gaz_Edge

Перевірте, чи ця відповідь допоможе вам http://stackoverflow.com/a/41328885/3177007
Мохамед Джаліл Назір

Відповіді:


250

Ціль-с

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 ви повинні замінити Selector("tapDetected")на:"tapDetected:"
datayeah

За замовчуванням singleTap.numberOfTapsRequired = 1, щасливе кодування Дякую
Раві

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

18

Просто додайте a UITapGestureна зображення, але не забудьте ввімкнути його UserInteraction .

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

6

Зараз у Свіфті!

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

Стрімкий 3

На 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

Використання сюжетної дошки з видом у контролері подання.
Перегляд може бути ImageView, UIView, UILabel, TextField або інший контролер


Вибравши один із розпізнавачів жестів, перетягніть його на свій контролер.
Тепер він відображатиметься в "Контур документа" та заголовку контролера перегляду xib.

Значок жесту в рядку документа та xib
Перетягніть жест до UILable
Перетягніть жест до UILable


Вручну створити (IBAction) метод у файлі заголовка


створити метод IBAction у файлі заголовка
Тепер перетягніть його від обробника до значка жесту в xib
Пов’яжіть його значком жестів


0

Якщо ваш UIImageView - це IBOutlet, який ви отримуєте з Storyboard або Nib, ви можете додати UIGestureRecognizer до подання зображення, увімкнути взаємодію користувача та підключити IBAction до розпізнавача жестів.

Для отримання додаткової інформації перевірте мою відповідь на це запитання: Як зробити UIImageView на розкадруванні клікабельним (швидким)


0

Ось ще один варіант: Чит.

Я маю на увазі, подумайте збоку.

Налаштуйте свій UIImage так, як ви хочете, підстригайте, відповідати аспектам і будь-що.

Накладіть це на UIView (рівні розміри, положення тощо)

Встановіть фон для очищення кольору, а клас - для UIControl.

Наведіть торкніться події всередині вашого обробника та вуаля.


Навіть простіше, ніж UIView: Використовуйте кнопку та видаліть текст. ;)
Неф

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")
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.