从TOP / BOTTOM检测触摸

时间:2011-08-26 14:29:31

标签: objective-c ios touch

我是IOS开发的初学者,我已经开发了一个关于检测多次触摸的简单演示,方法是tutorial

它工作正常,但我的问题是:当我尝试从iphone外部(从TOP或BOTTOM)开始触摸时,未检测到触摸,并且当我尝试从LEFT /做同样的事情时右侧,它的工作原理。有人可以向我解释,为什么当我尝试从顶部或底部拖动时未检测到触摸?

5 个答案:

答案 0 :(得分:8)

它不会从顶部开始,因为状态栏会触摸。你知道当你点击状态栏时,滚动的内容如何进入顶部?这就是状态栏“窃取”你的触摸的原因。如果您删除状态栏(您可以在应用程序的Info.plist中执行此操作),您将从顶部接触,即使使用iOS 5,它也是“从顶部拉出”通知中心。 (第一次下拉时会显示一个小的下拉手柄,如果再次拉动,通知中心将会窃取你的触摸。)

然而它应该从底部开始,除非有某种标签栏或其他工具栏也可以接触。

答案 1 :(得分:5)

状态栏将显示触摸事件而非您的视图。 您可以通过以下方式隐藏状态栏:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];

或者只需在info.plist文件中设置状态栏最初隐藏属性。

此外,如果您运行iOS 5,状态栏隐藏时行为会有所不同:您可以从视图中获取该事件,但系统也会下拉一个浮动拖动条。

如果您不想隐藏状态栏,可以尝试设置Windows图层并将视图放在状态栏上方(不确定是否允许在AppStore中使用)。

答案 2 :(得分:2)

我认为它已被停用,因为iOS 5的未来版本允许您通过触摸iphone的顶部到底部来显示通知中心。

由于我在iOS 5上运行,因为我无法测试,所以无法提供更多详细信息,但我认为这是最可能的答案

答案 3 :(得分:1)

loadView的{​​{1}}中使用此代码:

UIViewController

从屏幕滑动到任何方向和方向时,都会拾取所有触摸。请注意,视图的大小始终占据整个屏幕。

我相信其他人说的是,状态栏会在触摸事件可见的情况下获得。此外,如果视图未跨越整个屏幕,则可能无法获取事件。例如,如果框架的y坐标为20,则从顶部滑动手指时不会触摸。

答案 4 :(得分:0)

我认为以前关于状态栏的回答是完全正确的。

还要记住,手势识别器下面的东西更强大,但编程触摸API更复杂。

基本元素是一个具有touchBegan,touchEnded,touchCancelled和touchMoved方法的UIEvent。检查这方面的文档,因为我有点从内存开始...无论如何你可以看到,如果甚至需要用touchBegan打开,那么在触敏区域外启动手势可能不会飞。 从左到右的东西可能主要是因为屏幕和边缘之间的区域足够纤薄,即使你不在屏幕上也会拾取触摸。从上到下,从下到上有更宽的区域,你可能会在一个响应区域之外开始。