ios - UIButton 操作在 UIView 中不起作用

标签 ios iphone

我有一个 UIView 子类 View 和 2 个按钮以及 View 内的 UITableview。在设计部分,首先是一个按钮,然后是 UITableView,然后是第二个按钮。当我单击第一个按钮(即 tableview 上方的按钮)时,它会执行按钮操作。但是当我点击 UITableView 下方的第二个按钮时,它没有获得按钮操作。如果我将第二个按钮拖到 tableview 的位置上方,它就会执行操作。请帮助我!

最佳答案

好吧,当你有一个带有 userInteractionEnabled = YES 的 UIView 时,它会获得所有的触摸,因此,这个 View 后面的任何 UIView 都不会被触摸。

您可以使用 - hitTest:withEvent: 的解决方案:

您需要对您的 UITableView 进行子类化,将它传递给您在 UIButton“后面”的指针,并在您的 CustomTableView 中覆盖 - hitTest:withEvent:,如下所示:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    BOOL isInsideButton = CGRectContainsPoint(self.behindButton.frame, point);
    return isInsideButton ? nil : [super hitTest:point withEvent:event];
}

希望对您有所帮助。

关于ios - UIButton 操作在 UIView 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31355746/

相关文章:

ios - 我怎样才能使我的第 3 方键盘显示 'Multiple Languages' 而不仅仅是 'English' ?

ios - 检查数组中的值是否低于特定值

android - codenameone 和 Opentok native 接口(interface)

ios - 具有不同帐户和包 ID 的相同命名配置文件的问题

iphone - 分配rootviewcontroller时发生内存泄漏

ios - 在 SpriteKit 中随着时间的推移减小 CGPath 的大小?

iphone - ios中的数据管理

ios - WatchKit 错误 - 没有通知负载

iphone - 如何从网页访问 iPhone 位置?

iphone - 在 iphone 谷歌阅读器应用程序中将项目标记为已读/未读