Нажмите "Событие" на 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.
Направьте касание внутри события на ваш обработчик и вуаля.