-1

重複の可能性:
ボタンアクションがiPhoneで機能しませんか?

ナビゲーションバービューの代わりに画像ビューを追加するアプリケーションがあります。ビューでこのようにロードメソッドを実行しました。

curtainsView=[[UIImageView alloc]init];

curtainsView.image=[UIImage imageNamed:@"curtains.png"];
curtainsView.frame=CGRectMake(0,-44, 320, 60);
curtainsView.backgroundColor=[UIColor clearColor];

[self.view addSubview:curtainsView];

今、私はその画像ビューにボタンを追加したいと思います。私はこれでそれを達成しようとしています

UIImage *button2Image = [UIImage imageNamed:@"scroll_down.png"];
UIButton *scroll = [UIButton buttonWithType:UIButtonTypeCustom];
//scroll = [[UIButton alloc] init];
//self.scroll.tag=100;
[scroll setImage:button2Image forState:UIControlStateNormal];
scroll.frame = CGRectMake(270,-30, 40,40);
[scroll addTarget:self action:@selector(backpressed) forControlEvents:UIControlEventTouchUpInside]; 
//[scroll setUserInteractionEnabled:YES];
[self.view addSubview:scroll];

動作していません。それから私もこれを試しました

UIButton *btnDetail = [[UIButton buttonWithType:UIButtonTypeDetailDisclosure]retain];

btnDetail.frame = CGRectMake(260,-15,100,100);
[btnDetail addTarget:self action:@selector(backpressed) forControlEvents:UIControlEventAllTouchEvents];

[self.curtainsView addSubview:btnDetail];
[self.curtainsView bringSubviewToFront:btnDetail];
[self.curtainsView setUserInteractionEnabled:YES];

また、動作していません。その画像ビューの側にある場合は機能していませんが、フレームCGRectMake(260,0,100,100)を使用して2番目のコードを追加しようとすると機能します。ただし、そのボタンをその画像ビュー内に配置する必要があります。誰かがこれについて私を助けることができますか?

4

4 に答える 4

1

imageViews にサブビューを追加しないでください。代わりに、imageView の上の self.view にボタンを追加してください。また、スーパービューの境界の外にボタンを追加しないでください。

UIImage *button2Image = [UIImage imageNamed:@"scroll_down.png"];
UIButton *scroll = [UIButton buttonWithType:UIButtonTypeCustom];
[scroll setImage:button2Image forState:UIControlStateNormal];
scroll.frame = CGRectMake(270, 0, 40, 40);
[scroll addTarget:self action:@selector(backpressed) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:scroll];
于 2012-09-05T08:15:03.500 に答える
0

これはうまくいきます:

UIImageView *imgview=[[UIImageView alloc]initWithFrame:CGRectMake(10, 100, 300, 300)];
imgview.backgroundColor=[UIColor whiteColor];
imgview.userInteractionEnabled=YES;
[self.view addSubview:imgview];


UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
btn.Frame=CGRectMake(10, 10, 100, 20);
btn.backgroundColor=[UIColor blueColor];
[btn addTarget:self action:@selector(clickActonOfButtons) forControlEvents:UIControlEventTouchUpInside];
[imgview addSubview:btn];
btn=nil;
[imgview release];

注: ボタンに画像を追加する場合... この場合 imgview.userInteractionEnabled=NO;

于 2012-09-05T08:38:21.333 に答える
0

デフォルトは NO であるため、ImgView の userInteractionEnabled を YES にします。

UIImageView のタッチは UIButton に渡されません。

curtainsView.userInteractionEnabled=YES;

また、UIButton の userInteractionEnabled を YES に設定します

btnDetail.userInteractionEnabled=YES;

CGRectMake(260,-15,100,100); のようにフレームを設定するときは、btnDetail の境界がスーパービューの境界の外側にあることも確認してください。

CGRectMake(260,0,100,100) を設定すると、btnDetail の境界が可視領域内にあり、スーパービューの境界内にあるため、機能します

于 2012-09-05T08:44:12.597 に答える
0

画像ビューではなくビューにボタンを追加する必要があります。ボタンを imageview ではなく self.view に追加します。

    [self.view addSubview:btnDetail];
    [self.view bringSubviewToFront:btnDetail];

それはうまくいきます。

于 2012-09-05T09:05:55.130 に答える