0

アニメーション化されたシンプルなUIImageViewものがあり、タップを検出する必要があります。UIButtonthis のサブビューである を追加しましたUIImageView。ただし、それをタップしても機能しません。ビューに追加されたときにそれ自体を既にテストしましたが、UIButtonそれは機能するため、問題の原因となっているのはボタンではありません。

コードは次のとおりです。

self.red = [[UIImageView alloc] initWithFrame:CGRectMake(50, 300, 85, 100)];
self.red.image = [UIImage imageNamed:@"red.png"];

[self.red setUserInteractionEnabled: YES];
[self.view addSubview: self.red];
[self.view bringSubviewToFront:self.red]; 

UIButton *redButton = [UIButton buttonWithType: UIButtonTypeCustom];
redButton.frame = CGRectMake(self.red.frame.origin.x, self.red.frame.origin.y, self.red.frame.size.width, self.red.frame.size.height);
[redButton addTarget: self action:@selector(correctButtonClick) forControlEvents: UIControlEventAllTouchEvents];
[redButton setUserInteractionEnabled:YES];

[self.red addSubview: redButton];
[self.red bringSubviewToFront:redButton]; 

ここで何が間違っていますか?

4

7 に答える 7

3

この行の代わりに、これをredButton.frame = CGRectMake(self.red.frame.origin.x, self.red.frame.origin.y, self.red.frame.size.width, self.red.frame.size.height);試してください

redButton.frame = CGRectMake(0,0, self.red.frame.size.width, self.red.frame.size.height); 

編集:この行[self.red bringSubviewToFront:redButton];は必要ありません..

于 2013-04-24T09:36:47.947 に答える
3

UIButtona をサブビューとして挿入する代わりに、 aを使用しますUITapGestureRecognizer。次に例を示します。

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(correctButtonClick)];
[self.red addGestureRecognizer:tap];
于 2013-04-24T09:39:13.187 に答える
2

あなたがしなければならないことは、あなたの実装を逆にすることです.UIImageViewにUIButtonを追加することは良い考えではありません.カスタムスタイルのUIButtonをプログラムで作成し、UIImageViewをそのサブビューとして追加すると、間違いなく機能します.

編集:現在の実装に関しては、UIImageView 内に UIButton を追加したため、おそらく画像のすべての部分でクリック イベントを受け入れる必要があります。その場合、UIButton の x 座標と y 座標は red.x と red ではなく 0,0 になります。 .y、ただし幅と高さは正しい

于 2013-04-24T09:56:40.800 に答える
1

カスタム ボタンには UI がありません。そのため、選択することはできません。(バインドされたボタンで試すか、ボタンに画像を追加してボタンのアルファを0.1などに設定できます)

@tkanzakicの答えは正しいはずです。TapGestureRecognizer を ImageView に追加するか、Image を Button に追加するだけです。

于 2013-08-20T08:14:54.767 に答える
0

imageview と Button を別々に使用する代わりに、 Button 内で imageview プロパティを使用します。これにより、すべての問題が解決され、余分なコード行を書く必要がなくなります。

UIButton *redButton = [UIButton buttonWithType: UIButtonTypeCustom];

redButton.imageView.image = [UIImage imageNamed:@"red.png"];

redButton.frame = CGRectMake(50, 300, 85, 100);
[redButton addTarget: self action:@selector(correctButtonClick) forControlEvents: UIControlEventAllTouchEvents];
[redButton setUserInteractionEnabled:YES];

[self.red addSubview: redButton];
于 2013-04-24T09:58:13.337 に答える
0

それは簡単です。ボタンのフレームが間違っていて、思った場所にないためにボタンが反応しません。基本的に以下の行を変更します。

redButton.frame = CGRectMake(self.red.frame.origin.x, self.red.frame.origin.y, self.red.frame.size.width, self.red.frame.size.height);

これとともに:

redButton.frame = CGRectMake(self.red.bounds.origin.x, self.red.bounds.origin.y, self.red.frame.size.width, self.red.frame.size.height);
于 2013-04-24T10:55:10.840 に答える