gpt4 book ai didi

ios - 将触摸传递给另一个 View Controller (iOS)

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

我有一个长按手势,可以显示另一个 Controller 。在呈现的 Controller 中,我有 TouchesBegan()、touchesMoved() 和 TouchedEnded() 方法,用于检测 View Controller 上的触摸。

当我长按并按住时,会出现下一个 View Controller 。如果我不释放长按,并在屏幕上移动手指,则不会调用touchesMoved()方法,并且当我停止触摸时,也不会调用touchesEnded()。但是,当我释放长按触摸并再次触摸它时,将调用这些方法,因为长按手势识别器不再接收触摸,而是呈现的 View Controller 接收触摸。

在仍然长按的情况下,所呈现的屏幕是否可以识别触摸?如何将此长按识别器传递到下一个 View Controller ?

最佳答案

手势识别器存在于 View 中。当您呈现另一个 View Controller 时,该 View 已暂时消失。它的消失导致了这个问题。解决方案是不实际呈现另一个 View Controller ,而是假装它。在你的第一个 View Controller 上想象你的第一个 View (我们称之为 view1)。创建另一个相同大小的 View 并将其放在顶部(我们将其称为 view2)。将手势识别器放在 view2 上。用户长按屏幕。即使 view2 获得了触摸,您也可以找到用户在 view1 中触摸的位置,如下所示:

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
if let touch = touches.first {
let position :CGPoint = touch.locationInView(view1)
}
}

此时您可以在 view2 后面和 view1 前面的 view3 中设置动画。这将产生转到新屏幕的效果,但是接收触摸命令的 View 永远不会去任何地方并且仍在收听命令。

关于ios - 将触摸传递给另一个 View Controller (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38882228/

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