子视图之外的UIButton可点击区域

时间:2012-06-02 16:10:09

标签: iphone objective-c ios ipad

所以我有一个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];

1 个答案:

答案 0 :(得分:4)

这是正常行为,父母界限之外的视图不会接收触摸动作 为了解决这个问题,请重新排列视图,如下所示

  • 主视图将足以容纳内部视图和关闭按钮,此视图的backGroundColor将是清晰的颜色
  • 内部视图将是包含普通视图图像和/或内容的内部视图的视图

主视图将同时包含内部视图和关闭按钮 主视图将足以容纳按钮 主视图将具有清晰的颜色背景,因此不会影响布局

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

然后呈现viewcontroller的主视图