【问题标题】:UIButtons in XIB not responding to tapsXIB 中的 UIButtons 不响应点击
【发布时间】:2016-09-07 12:32:58
【问题描述】:

我正在尝试向 xib 添加两个按钮,但两个按钮都没有响应点击。我已经在这里解决了类似的问题,但还没有找到可行的解决方案。

在 xib 中,我有一个背景视图 -> 一个较小的视图 -> 两个并排按钮被同级小视图分开。

按钮是 xib 的最顶层。我已经在所有超级视图和同级视图上启用了 userInteraction 和剪辑子视图。

我在视图的控制器类中设置了一个断点,当视图被初始化时它会被命中。我已经尽可能地简化了课程,但是当我点击任一按钮时,什么都没有发生。此视图位于按预期反应的 tableview 之上。

我提取了 xib 和控制器文件并将它们添加到示例应用程序中。它表现出同样的问题。我已在本文底部附上了该示例应用程序的代码。

screenshot

这是我用来初始化将 xib 添加到我的 rootVC 的代码:

PageSwitchViewController *pageSwitchViewController = [PageSwitchViewController new];
[pageSwitchViewController.view setFrame:CGRectMake(0, ([UIScreen mainScreen].bounds.size.height - [pageControlHeight integerValue]), [UIScreen mainScreen].bounds.size.width, [pageControlHeight integerValue])];
[self.view addSubview:pageSwitchViewController.view];

【问题讨论】:

  • 通常 nib 文件与文件所有者相关联,请尝试将 UIControlEventTouchUpInside 中的操作添加到文件所有者而不是 viewController 场景中。
  • 也许这只是另一个问题的征兆呢? nib 的文件所有者与我放置 IBAction 的位置相同。
  • 点击 xcode 中的视图调试器按钮,查看按钮所在的视图,该框架是否应大于按钮,并检查其他视图是否未出现在按钮前面
  • 按钮位于顶部。我在代码中明确地做到了这一点,并且在视图调试器中已经确认了这一点。按钮确实稍微超出了它们的超级视图的范围,但这仅仅是因为圆角。我确实尝试将超级视图中的按钮缩小到更小的尺寸,但同样的问题是,它们对点击没有反应。
  • 分享您的代码以便于发现问题

标签: ios objective-c uibutton autolayout xib


【解决方案1】:

想通了。

[self.view addSubview:pageSwitchViewController.view];

因为我正在添加视图,所以我没有将控制器的其余部分存储在内存中。我将控制器的私有属性添加到父控制器的类中,现在按钮按预期工作。

【讨论】:

    猜你喜欢
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多