UIImageView как кнопка
Я пытаюсь принять действия UIImageView и запускать их каждый раз, когда он нажимает на UIImageVie, но мне трудно работать, пожалуйста, помогите мне
но вот что я делаю:
[View setUserInteractionEnabled:YES];
[View addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside];
- (void) myAction:(id)sender
{
NSLog(@"It works!");
}
Ответы
Ответ 1
Objective-C
В вашем viewDidLoad:
метод напишите это:
-(void)viewDidLoad {
UIImageView *imageview = [[UIImageView alloc]initWithFrame:CGRectMake(100.0, 100.0, 100.0, 100.0)];
[imageview setImage:[UIImage imageNamed:@"image.png"]];
[imageview setUserInteractionEnabled:YES];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapping:)];
[singleTap setNumberOfTapsRequired:1];
[imageview addGestureRecognizer:singleTap];
[self.view addSubview:imageview];
}
Затем вызовите свой метод жестов так:
-(void)singleTapping:(UIGestureRecognizer *)recognizer {
NSLog(@"image clicked");
}
стриж
override func viewDidLoad() {
super.viewDidLoad()
let imageView: UIImageView = UIImageView(frame: CGRect(x: 100.0, y: 100.0, width: 100.0, height: 100.0))
imageView.image = UIImage(named: "image.png")
imageView.isUserInteractionEnabled = true
let singleTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.singleTapping(recognizer:)))
singleTap.numberOfTapsRequired = 1
imageView.addGestureRecognizer(singleTap)
self.view.addSubview(imageView)
}
@objc func singleTapping(recognizer: UIGestureRecognizer) {
print("image clicked")
}
Ответ 2
UIImageView
не является элементом управления, вы не можете добавить к нему объекты для управления. У вас есть несколько вариантов:
Поместите невидимый UIButton
поверх UIImageView
и добавьте к нему свою цель. Вы можете установить стиль кнопки в пользовательский и ее текст (и изображение), чтобы ничего не сделать невидимым.
Используйте только UIButton
. Вы можете добавить к нему фоновое изображение.
Добавьте UITapGestureRecognizer
к вашему представлению изображения и примените его метод обработчика касания.
Подкласс UIImageView
и переопределите методы обработки касаний, чтобы делать то, что вам нужно делать.
Ответ 3
Все, что вам нужно сделать, - перетащить Recognizer Tap Gesture на imageView (в раскадровке) и включить взаимодействие с пользователем в инспекторе атрибутов.
Если вы хотите использовать изображение в качестве ссылки на другой контроллер представления, просто перетащите указатель Tap Gesture Recognizer в нижней части контроллера вида на контроллер представления назначения.
Ответ 4
Я не профессионал, но вы можете использовать кнопку для этого
UIButton *imageButton = [UIButton buttonWithType:UIButtonTypeCustom];
imageButton.frame = CGRectMake(0, 0, 200, 200);
[imageButton setImage:[UIImage imageNamed:@"Your_Image.png"] forState:UIControlStateNormal];
imageButton.adjustsImageWhenHighlighted = NO;
[imageButton addTarget:self action:@selector(myAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:imageButton];
Ответ 5
UIImageView
не является UIControl
, поэтому он не имеет метода addTarget:action:forControlEvents
как часть своего интерфейса. Вместо этого вы можете использовать распознаватель жестов.