Як зробити UIButton на клавіатурі через UIImageView?

I want to create a UIButton to display over an UIImageView. My code snippet is as shown below:

imageView = [[UIImageView alloc] initWithImage:image]; //initWithImage:image

imageView.userInteractionEnabled = YES; //to enable touch interaction with image



UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn setTitle:@"ClickMe" forState:UIControlStateNormal];
[btn.titleLabel setFont:[UIFont systemFontOfSize:16]];


 btn.frame = CGRectMake(340, 550, 70, 50);

[btn addTarget:self action:@selector(onClickHotSpotButton)   forControlEvents:UIControlEventTouchUpInside]; //it wasnt working


[imageView addSubview:btn];
[self addSubview:imageView]; 

Моя програма відображає кнопку точно на частині зображення, де я хочу, але вона не відповідає на зображення зображення. Замість цього він виявляє один кран, як я виводити журнал на його виявлення. Але я хочу, щоб ця кнопка була натиснута на вибір і виконати певну функцію.

Заздалегідь спасибі.

wahib

9

8 Відповіді

Я спробував це і працює для мене .......

UIImageView * imageView = [[UIImageView alloc]init];
[imageView setImage:[UIImage imageNamed:@"image.jpeg"]];
[imageView setFrame:CGRectMake(10,10,300,300)];
[imageView setContentMode:UIViewContentModeScaleToFill];
[imageView setUserInteractionEnabled:TRUE];

UIButton * ButtonOnImageView = [[UIButton alloc]init];
[ButtonOnImageView setFrame:CGRectMake(135,120,60,30)];
[ButtonOnImageView setImage:[UIImage imageNamed:@"image.jpeg"] forState:UIControlStateHighlighted];
 [ButtonOnImageView setImage:[UIImage imageNamed:@"image2.jpeg"] forState:UIControlStateNormal];
[ButtonOnImageView addTarget:self action:@selector(OnClickOfTheButton) forControlEvents:UIControlEventTouchUpInside];

 [imageView addSubview:ButtonOnImageView];
 [self.view addSubview:imageView];
5
додано
Якщо ви встановили зображення на кнопці, чому ви все ще використовуєте UIImageView?
додано Автор tcurdt, джерело
  1. you have to add define button as custom.It will work for you.

    UIButton *Button = [UIButton buttonWithType:UIButtonTypeCustom];

3
додано

Можна використовувати лише одну кнопку і сказати:

[UIButton setImage:[imageNamed:@"image.png"]];
3
додано
Ваше рішення здається найбільш елегантним
додано Автор nurxyz, джерело

потрібно додати кнопку як підклас a

scrollview

ні

imageview

.. неможливо натискати, якщо кнопка є підкласом uiimageview .. призначити спеціальну позначку для кожної кнопки, щоб розпізнати натиснуту кнопку

сподіваюся, що це допоможе

1
додано

Я можу показати UIButton на UIImageVIew і це код оновлення. Я вже згадував про нещодавні проблеми, що знаходяться внизу.

imageView = [[UIImageView alloc] initWithImage:image]; //initWithImage:image

//imageView.tag = i;//tag our images for later use when we place them in serial form
[imageView setContentMode:UIViewContentModeScaleToFill]; //though it has no impact
imageView.userInteractionEnabled = YES; //to enable touch interaction with image

[self addSubview:imageView];

UIButton *btn = [[UIButton buttonWithType:UIButtonTypeContactAdd] retain]; //Plus icon button

btn.frame = CGRectMake(215, 550, 100, 100);
[btn addTarget:self action:@selector(onClickHotSpotButton) forControlEvents:UIControlEventTouchUpInside]; //it wasnt working

**[self addSubview:btn]; //Buttons are clickable but shows button on all images**

//[imageView addSubview:btn]; //Buttons are not clickable and are shown on all images

Зараз у мене є два обряди вибору. Чи я роблю мою кнопку підглядом ImageView або ScrollView, який є батьком ImageView. Якщо я зробити кнопку subview Scrollview як [self addSubView: btn]; воно відображається в правильному положенні і можна натискати, але проблема полягає в тому, що вона створюється на всіх зображеннях у черзі, тому що я роблю її підпорядкуванням батьківського перегляду, тобто. Інакше, якщо я зроблю це підглядом дочірнього перегляду, тобто. ImageView, який є унікальним для кожного зображення, але все одно його показано на всіх зображеннях, і його не можна натискати: /

Можна any1 керівництво мені про те, як зробити його клікабельний і зберігаючи зв'язок між динамічною кнопкою і зображенням унікальним, так що у мене є різні кнопки на різних позиціях на кожному зображенні в черзі.

0
додано

Якщо це зображення, яке можна натиснути, я віддаю перевагу кнопці зображення.

UIButton *sampleButton = [UIButton buttonWithType:UIButtonTypeCustom];
[sampleButton setFrame:CGRectMake(kLeftMargin, 10, self.view.bounds.size.width - kLeftMargin -      kRightMargin, 52)];
[sampleButton setTitle:@"Button Title" forState:UIControlStateNormal];
[sampleButton setFont:[UIFont boldSystemFontOfSize:20]];
[sampleButton setBackgroundImage:[[UIImage imageNamed:@"redButton.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal];
[sampleButton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:sampleButton];
0
додано
Дякую за Вашу відповідь. Чи є для мене зображенням кнопка чи ні. Все, що я хочу, це зробити його клікабельний. Зараз у мене є два обряди вибору. Чи я роблю мою кнопку підглядом ImageView або ScrollView, який є батьком ImageView. Якщо я зробити кнопку subview Scrollview як [self addSubView: btn]; воно відображається в правильному положенні і можна натискати, але проблема полягає в тому, що вона створюється на всіх зображеннях у черзі, тому що я роблю її підпорядкуванням батьківського перегляду, тобто. Інакше, якщо я зроблю це підпоглядом дочірнього перегляду, тобто.
додано Автор Wahib Ul Haq, джерело

Я зробив щось подібне в одному з моїх програм. Я створив файл xib, який містив серію зображень, кожна з яких малювалася зверху. Я підключив їх до відповідних точок у файлі класу. Потім я розробив, який натиснутий натиснув на кнопкуВід початку:

if(CGRectContainsPoint(btnFirstButton.frame, touchLocation)){
    //do something useful
}else if(CGRectContainsPoint(btnSecondButton.frame, touchLocation)){
    //do something useful
}

Сподіваюся, що допоможе - працював для мене :-)

0
додано

спробуйте встановити взаємодію користувача з включеною кнопкою.

[btn setEnabled:YES];

Тому, що UIImageView встановить користувальницьке взаємодія кнопки, що відключена за замовчуванням.

Інакше ви можете спробувати це. Просто змініть останні два рядки.

Замінити:

[imageView addSubview:btn];
[self addSubview:imageView]; 

з цим:

[self addSubview:imageView];
[self addSubview:btn];

Переконайтеся, що ви додали зображення першого та другого, як я вже згадував. інакше кнопка b буде розміщена за зображенням і виглядатиме прихованою.

0
додано
IT KPI iOS
IT KPI iOS
74 учасників

Чат обсуждения IOS. - Оффтоп, флуд, оскорбления и вбросы здесь не приняты. - За нарушение - предупреждение или mute на неделю. - За спам и рекламу - ban. Все чаты IT KPI: https://t.me/itkpi/602

ios_jobs_ua
ios_jobs_ua
27 учасників

Mobile Dev Jobs UA
Mobile Dev Jobs UA
20 учасників

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin, RN и т.д.