2014-09-26 110 views
2

我试图加载一个UIView,然后马上检测触及新视图。目前,覆盖touchesBegan延迟了大约一秒钟。touchesBegin延迟后呈现UIView

因此,我加载了UIView并立即继续点击屏幕。调用touchesBegan需要大约一秒钟的时间。从那时起,一切都很好。但是,我无法承受〜第二次等待。

我已经将UIView中的所有代码都剥离出来,以防止任何东西堵塞主线程,但延迟仍然存在。

如何才能立即获得新提交的触摸反馈UIView?谢谢。

- 编辑下面 -

我一直在玩弄这在过去的几个小时。即使在创建自定义UIWindow并重写sendEvent时,当显示新视图时,UITouchPhase也会暂停。要再次开始接收事件,我必须将手指从屏幕上取下并放回屏幕上。 (我不想这样做)。

这个问题似乎在于对新视图控制器的延续。当它继续时,触摸阶段结束。如果我只是将子视图添加到当前视图控制器,我会看到所需的功能(即即时响应触摸)。

鉴于我新近出现的视图包含很多逻辑,我想将它全部包装在它自己的视图控制器中,而不是将它添加到演示者视图控制器中。有没有办法让我做到这一点,并使用'addSubview`来呈现它?这应该有希望达到预期的效果。

回答

2

最后,我用它自己的xib创建了一个自定义视图控制器。我会在哪里寻找,我现在实例化该自定义视图控制器并追加它的视图。这消除了触摸滞后。

+0

我在这里遇到了同样的麻烦。 http://stackoverflow.com/questions/33727638/ios-why-touchesbegan-has-some-delay-in-some-specific-area-in-uiview你是如何解决你的麻烦? – TomSawyer 2015-11-16 07:35:14

1

你禁用了多点触摸吗?在控制器等待查看是否有后续触摸(在所有单触式触摸上)时,存在固有的延迟。最初的低迷可能是加载多点触控代码并决定如何处理。

myViewController.view.multipleTouchEnabled=NO; 
+0

尝试禁用多点触摸,不会不幸停止延迟。我还实现了一个自定义的'UIWindow'并重写了'sendEvent'。奇怪的是,这也会在延迟期间停止接收/发送事件。 – 2014-09-26 19:02:31

0

至于你最后的问题,看看view controller containment。由于iOS 5 Apple正式和安全地提供了挂钩来呈现一个视图控制器作为另一个视图控制器的子视图。

可悲的是我对于更大的问题一无所知。