Подтвердить что ты не робот

UIImageView как кнопка

Я пытаюсь принять действия UIImageView и запускать их каждый раз, когда он нажимает на UIImageVie, но мне трудно работать, пожалуйста, помогите мне

но вот что я делаю:

[View setUserInteractionEnabled:YES];

[View addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside];


- (void) myAction:(id)sender
{
    NSLog(@"It works!");
}
4b9b3361

Ответ 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 как часть своего интерфейса. Вместо этого вы можете использовать распознаватель жестов.