这是问题所在: 我想在我的应用程序中使用UIGestureRecognizer。 出于这个原因,我想从我的观点中抛弃TouchBegan / TouchEnded事件。
但是我不明白如何使用UIGestureRecognizers进行触摸时(用户将手指放在屏幕上)进行管理。
最简单的一个是UITapGestureRecognizer,但是只有当TapGesture完成时才会触发相关的选择器(嗯......这当然是完全合理的)。但问题仍然存在:如何停止使用touchesBegan并从UIGestureRecognizer获取该事件?
谢谢!
答案 0 :(得分:4)
以下是一个例子:
//Pan gesture
recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
((UIPanGestureRecognizer *)recognizer).minimumNumberOfTouches = 3; //number of fingers
recognizer.delegate = self;
[self.view addGestureRecognizer:recognizer];
[recognizer release];
- (void)handlePan:(UIPanGestureRecognizer *)recognizer
{
if (recognizer.state == UIGestureRecognizerStateBegan)
{
//do something
} else if (recognizer.state == UIGestureRecognizerStateEnded)
{
//do something
}
}
还在.h文件中实现UIGestureRecognizerDelegate。可能是你需要做self.view.userInteractionEnabled = YES,具体取决于你正在使用的视图。例如,如果是UIImageView,则需要设置userInteractionEnabled = YES,默认为NO
答案 1 :(得分:1)
对于你的尝试,你做不到。手势识别器用于高级手势,因此它们在所有应用程序中的行为相同(想想滑动,双击所需的时间等)。对于低级别控制和执行识别器无法执行的操作,您仍然需要在touchesbegan,touchesEnded等中实现逻辑。
答案 2 :(得分:0)
为什么不在UIGestureRecognizer子类中实现自己的touchesBegan - 拦截消息,提取你想要的信息,然后将消息传递给super的touchesBegan?