【问题标题】:Select tablecell when touching embedded view触摸嵌入视图时选择表格单元
【发布时间】:2010-02-09 13:18:08
【问题描述】:

我有一个带有嵌入式 MapView 的自定义表格单元,显示一个小区域。当用户选择单元格时,我想推送一个具有更大地图视图和更多信息的新视图,例如与您所在位置的距离、地图类型的选项等。

如果我在我的地图视图周围留下一个小边距,用户可以单击该边距以选择单元格,但是如果他们在地图视图内单击,我如何使单元格被选中?

问候,
- 素食

【问题讨论】:

    标签: iphone cocoa-touch uitableview mkmapview


    【解决方案1】:

    我认为你需要重写从UIView继承的hitTest方法

    - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
    

    这个方法遍历视图 通过发送层次结构 pointInside:withEvent: 给每个人的消息 子视图来确定哪个子视图 应该收到一个触摸事件。如果 pointInside:withEvent: 返回 YES, 那么子视图的层次结构是 遍历;否则,它的分支 视图层次结构被忽略。 你 很少需要调用这个方法,但是 您可能会覆盖它以隐藏触摸 来自子视图的事件。

    【讨论】:

    • 就是这样。我在我的自定义单元格上实现了这个方法,然后简单地返回 self.谢谢!
    【解决方案2】:

    尝试将 MapView 的 userIteractionEnabled 属性设置为 NO

    【讨论】:

    • 这只会从事件队列中删除事件。他需要拦截它们,让父视图处理它们。
    • 我认为当你禁用 userInterActionEnabled 时,就像触摸从未发生过一样?
    • 然后视图不会处理触摸,而是让父视图处理它。 (至少我认为它必须这样做)
    • @vladimir - 好的,这将是一个简单的解决方案 :)
    • @Vegar - 至少它是如此简单,值得在我更麻烦的解决方案之前尝试:)
    猜你喜欢
    • 2020-01-01
    • 2019-05-22
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 2020-09-11
    相关资源
    最近更新 更多