Нажмите "Событие" на UIImageView программно в ios

Я показываю изображение из кода, вот код

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

Я хочу обработать событие touch на preArrowImage программно.

Ответ 1

Objective-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

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

Ответ 2

Просто добавьте UITapGesture на изображение, но не забудьте сделать его UserInteraction Enabled.

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

Ответ 3

Теперь в 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

Использование панели справки с представлением в виде контроллера.
view may be ImageView, UIView, UILabel, TextField or other controller


После выбора одного из распознавателей жестов перетащите его на контроллер.
Теперь он будет отображаться в "Структура документа" и заголовке контроллера xib.

Gesture icon in document out line and xib
Жест жестокости в UILable
Drag gesture to UILable


Manually create (IBAction)method in header file


создать метод IBAction в файле заголовка
Теперь перетащите его из значка жестов в значок xib
Link it with gesture icon

Ответ 5

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

Ответ 6

Если ваш UIImageView является IBOutlet, который вы получаете из раскадровки или Nib, вы можете добавить UIGestureRecognizer к представлению изображения, включить взаимодействие с пользователем и подключить IBAction к распознавателю жестов.

Для получения дополнительной информации проверьте мой ответ на этот вопрос: Как сделать UIImageView на раскадровке кликабельной (быстрой)

Ответ 7

Вот еще один вариант: Cheat.

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

Настройте свой UIImage, как вы хотите, обрезанный, подходящий размер, что угодно.

Наложите это на UIView (равные размеры, положение и т.д.)

Установите фон в clearcolour, а класс - в UIControl.

Направьте касание внутри события на ваш обработчик и вуаля.