1

したがって、ctrViewと呼ばれるUIViewがあり、このctrViewがUIViewControllerのビューに追加されます。基本的には、内側の小さな長方形のフレームです。そして、このコンテナビューの右上隅にUIButtonを追加しましたが、ctrViewの少し外側にあるUIButton領域をクリックしても、ボタンに関連付けられたアクションはトリガーされないようです。コンテナビュー内にあるUIButton領域のみがアクションをトリガーします。この奇妙な問題を解決するにはどうすればよいですか?

UIButton *closeButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    [closeButton setImage:[UIImage imageNamed:@"close.png"] forState:UIControlStateNormal];
    [closeButton setBackgroundColor:[UIColor clearColor]];
    [closeButton addTarget:self action:@selector(closeZoomedImageView) forControlEvents:UIControlEventTouchUpInside];
    [closeButton setCenter:CGPointMake(ctrView.frameX + ctrView.frameWidth - 30, ctrView.frameY - 15)];
    [ctrView addSubview:closeButton];
    [closeButton release];
4

1 に答える 1

4

これは通常の動作であり、親の境界外のビューはタッチアクションを受け取りません。これを修正するには、次のようにビューを再配置します。

  • メインビューは、内部ビューと閉じるボタンを収容するのに十分な大きさになります。このビューのbackGroundColorはクリアカラーになります。
  • 内部ビューは、通常のビューの画像やコンテンツを含む内部ビューになるビューになります

メインビューには、内部ビューと閉じるボタンの両方があります。これは、その子メインビューがボタンを収容するのに十分な大きさであるためです。メインビューは、レイアウトに影響を与えないように、背景がクリアカラーになります。

したがって、現在内部ビュー内にあるすべてのビューを追加します。内部ビューとボタンビューの両方がメインビューに追加されます。

次に、メインビューをビューコントローラに提示します

于 2012-06-02T16:17:16.087 に答える