gpt4 book ai didi

ios - UITouch 和 UIEvents : fighting the framework?

转载 作者:行者123 更新时间:2023-11-29 11:16:31 25 4
gpt4 key购买 nike

想象一个 View ,比如说,有 4 个 subview ,彼此相邻但不重叠。我们称它们为 View #1 ... View #4

所有 5 个这样的 View 都是我自己的 UIView 子类(是的,我读过:Event Handling 以及 iOS Event Guide 和这个 SO question 和这个 one,还没有回答)

当用户触摸其中一个时,UIKit 对其进行“hiTest”并将后续事件传递给该 View :view#1

即使手指超出 View #1,也会覆盖 View #3。

即使这个“拖动”现在在 View #3 上, View #1 仍然收到 touchesMoved,但 View #3 什么也没收到。

我希望 View #3 开始响应触摸。可能带有我自己的“touchedEntered”,以及 View #1 上可能的“touchesExited”。

我该怎么做?

我可以看到两种方法。

  1. 回避问题并在父级中完成所有触摸处理每当我检测到 touchesMoved 超出 view#1 边界时查看,或者,
  2. 转移到父 View ,告诉它“重新分配”。不是特别的不过,要清楚这种重新分配的工作原理。

对于解决方案 #2,我感到困惑的不是转发本身,而是如何找到我想要转发到的 UIVIew。我显然可以循环通过父 subview ,直到我找到一个其边界/框架包含触摸的 subview ,但我想知道我是否遗漏了一些东西,Apple 已经提供但我无法解决这个问题。

有什么想法吗?

最佳答案

我已经这样做了,但是我使用了 CALayers 而不是子 UIViews。这样,就不用担心 subview 捕获/重新分发事件到父 UIView。你可能无法做到这一点,但它确实简化了事情。我的解决方案倾向于大量使用 CGRectContainsPoint()

关于ios - UITouch 和 UIEvents : fighting the framework?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9179832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com