はてなブックマークに追加

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
はてなブックマークに追加

UIImaegViewにUIButtonを追加する


UIImaegViewUIButton1.jpg


図のようにUIImaegViewにUIButtonを追加することは
できません!

無理やり追加した場合、ボタンが反応しない不具合が起こります。


ごめんなさい、嘘を書いてました。
UIImaegViewにUIButtonを追加することは
できます!

そのプログラムを下に載せます
なお、画像のtest.png, button.pngなどの画像は
各自用意して、プロジェクトに追加しておいてください。


- (void)viewDidLoad {
[super viewDidLoad];

// imageViewをViewに追加
UIImageView *imageView = [[UIImageView alloc] initWithImage
:[UIImage imageNamed:@"test.png"]];
imageView.frame = CGRectMake(50, 100, 200,200);
imageView.userInteractionEnabled = YES;
[self.view addSubview:imageView];

// UIButtonをUIImageViewに追加
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(160, 0, 40, 40)];
[button setBackgroundImage:[UIImage imageNamed:@"button.png"]
forState:UIControlStateNormal];
[button addTarget:self action:@selector(deleteButtonPressed:)
forControlEvents:UIControlEventTouchUpInside];
[imageView addSubview:button];
}

- (void) deleteButtonPressed:(id)sender
{
NSLog(@"pressed!");
}


ポイントは10行目付近の
imageView.userInteractionEnabled = YES;
と書かれた行です。
デフォルトではUIImageViewはユーザからのタッチイベントを
受け付けない設定になっているので、
この行で、タッチイベントの取得を許可しています。

下図のように、画像とボタンが表示されれば成功です。
ボタンを押せば、コンソールに"pressed!"と表示されます。

uiimageviewuibutton3.jpg

スポンサーサイト

コメントの投稿

非公開コメント

UIImageViewのuserInteractionEnabledプロパティ

UIImageView直接UIButtonを乗せることは可能です。
UIImageViewはuserInteractionEnabledの初期値がNOなので、そのままだとタッチに反応しないというだけです。
UIImageViewのuserInteractionEnabledプロパティをYESに設定すれば、UIImageViewに追加したボタンも反応するようになります。

userInteractionEnabledプロパティ

岸川克己さま

コメントありがとうございます。
ご指摘のように、userInteractionEnabledをYESにすることで
ボタンも反応するようになりますね!記事の方も修正しました。
貴重なご指摘をありがとうございました!

承認待ちコメント

このコメントは管理者の承認待ちです
開発アプリ

iDOF 色影 ラテアート ぱすてる

プロフィール

hokuson

Author:hokuson
京都在住。iPhoneアプリ「色影」や「iDOF」の開発者。アプリのレビューとかもしてみる。博士後期課程@R大学。ついに就職活動なるものをしなければいけないらしい。誰か雇ってください。笑。

カレンダー
06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
カテゴリ
最新コメント
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。