1

所以我有一个 UIView,我称之为 ctrView,这个 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

这是正常行为,父级边界之外的视图将不会收到触摸动作为了解决此问题,请重新排列视图,如下所示

  • 主视图将足够大以容纳内部视图和关闭按钮,此视图的背景颜色将是清晰的颜色
  • 内部视图将是具有普通视图的图像和/或内容的内部视图的视图

主视图将同时具有内部视图和关闭按钮作为其子视图主视图将足够大以容纳按钮主视图将具有清晰的颜色背景,这样它就不会影响布局

因此,您将在内部视图中添加当前拥有的所有视图,内部视图和按钮视图都将添加到主视图中

然后将主视图呈现给视图控制器

于 2012-06-02T16:17:16.087 回答