can*_*boy 35 iphone multi-touch uiview
我的应用程序有几个触发不同事件的按钮.用户不应该按住几个按钮.无论如何,按住几个按钮会崩溃应用程序.
所以,我试图在我的应用程序中禁用多点触控.
我在所有xib文件中取消选中"Multiple Touch",并且据我所知,属性'multipleTouchEnabled'和'exclusiveTouch'控制视图是否使用多点触控.所以在我的applicationDidFinishLaunching中,我把它放在:
self.mainViewController.view.multipleTouchEnabled=NO;
self.mainViewController.view.exclusiveTouch =YES;
Run Code Online (Sandbox Code Playgroud)
在我的每个视图控制器中,我都将它放在viewDidLoad中
self.view.multipleTouchEnabled=NO;
self.view.exclusiveTouch=YES;
Run Code Online (Sandbox Code Playgroud)
但是,它仍然接受多次触摸.我可以做一些事情,比如在触发事件后禁用其他按钮,但这将是一个丑陋的黑客.当然有一种方法可以正确禁用多点触控?
Mar*_*sey 44
如果一次只需要一个按钮来响应触摸,则需要为该按钮设置exclusiveTouch,而不是为父视图设置.或者,您可以在按钮获得"Touch Down"事件时禁用其他按钮.
这是后者的一个例子,在我的测试中效果更好.为这些按钮设置了exclusiveTouch,但是当你将手指从按钮的边缘移开而不是单击它时,会导致一些有趣的问题.
您需要将控制器中的插座连接到每个按钮,然后将"Touch Down","Touch Up Inside"和"Touch Up Outside"事件挂钩到控制器中的正确方法.
#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
Run Code Online (Sandbox Code Playgroud)
neo*_*oke 21
- (void)viewDidLoad {
[super viewDidLoad];
for(UIView* v in self.view.subviews)
{
if([v isKindOfClass:[UIButton class]])
{
UIButton* btn = (UIButton*)v;
[btn setExclusiveTouch:YES];
}
}
}
Run Code Online (Sandbox Code Playgroud)
- (void)viewDidLoad {
[super viewDidLoad];
for(UIView* v in self.view.subviews)
{
if([v isKindOfClass:[UIButton class]])
{
UIButton* btn = (UIButton*)v;
[btn setExclusiveTouch:YES];
}
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码经过测试,对我来说非常合适.一次按下多个按钮,没有应用程序崩溃.
您的应用程序崩溃是有原因的。进一步调查,使用调试器,看看有什么问题,而不是试图隐藏错误。
编辑:
好吧,好吧,我不得不承认我有点苛刻。您必须在每个按钮上设置exclusiveTouch 属性。就这样。multipleTouchEnabled 属性无关紧要。
| 归档时间: |
|
| 查看次数: |
41736 次 |
| 最近记录: |