iphone – 如何禁用多点触摸?

我的应用程序有几个按钮,触发不同的事件。用户不应该按住几个按钮。无论如何,按住几个按钮崩溃的应用程序。

所以,我想在我的应用程序禁用多点触摸。

我已经在所有的xib文件中取消选中“多重触摸”,并且就我可以解决,属性“multipleTouchEnabled”和“exclusiveTouch”控制视图是否使用多点触摸。所以在我的applicationDidFinishLaunching我把这:

self.mainViewController.view.multipleTouchEnabled=NO;
self.mainViewController.view.exclusiveTouch =YES;

在我的每个视图控制器,我把它放在viewDidLoad

self.view.multipleTouchEnabled=NO;
self.view.exclusiveTouch=YES;

然而,它仍然接受多个触摸。我可以做一些事情,例如禁用其他按钮后得到触碰事件,但这将是一个丑陋的黑客。当然有一种方法来正确禁用多点触摸?

如果你只想要一个按钮一次响应触摸,你需要为该按钮设置exclusiveTouch,而不是为父视图。或者,您可以在按钮获得“触摸”事件时禁用其他按钮。

这里是后者的一个例子,它在我的测试中更好。设置exclusiveTouch的按钮的工作,但导致一些有趣的问题,当你把你的手指离开按钮的边缘,而不是只是点击它。

你需要在你的控制器中有一个插座连接到每个按钮,并有“触摸下来”,“触摸内部”和“触摸外部”事件挂钩到控制器中的正确方法。

#import "multibuttonsViewController.h"

@implementation multibuttonsViewController

// hook this up to "Touch Down" for each button
- (IBAction) pressed: (id) sender
{
    if (sender == one)
    {
        two.enabled = false;
        three.enabled = false;
        [label setText: @"One"]; // or whatever you want to do
    }
    else if (sender == two)
    {
        one.enabled = false;
        three.enabled = false;
        [label setText: @"Two"];  // or whatever you want to do
    }
    else
    {
        one.enabled = false;
        two.enabled = false;
        [label setText: @"Three"];  // or whatever you want to do
    }
}

// hook this up to "Touch Up Inside" and "Touch Up Outside"
- (IBAction) released: (id) sender
{
    one.enabled = true;
    two.enabled = true;
    three.enabled = true;
}

@end
http://stackoverflow.com/questions/1080043/how-to-disable-multitouch

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:iphone – 如何禁用多点触摸?