【问题标题】:Stop touch moves if counter reaches 3如果计数器达到 3,则停止触摸移动
【发布时间】:2012-07-24 08:18:57
【问题描述】:

我有一个具有拖放功能的应用程序UIView。我应该只拖 3 次,不能超过。如何跟踪拖动次数?我尝试在touchesBegan() 中增加一个计数器,但是在点击视图时计数器也增加了。我希望仅在拖动视图时才增加它。您还可以提供一个 sn-p 用于将一个小的 UIView 拖放到顶部的另一个视图中。我不知道我是否使用了正确的方法。

我的代码:

(void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event {
    [self.view setMultipleTouchEnabled:NO]; 
    UITouch *touch = [touches anyObject]; 
    if ([touch view] == option1View || [touch view] == option2View ||
        [touch view] == option3View ||[touch view] == option4View) { 
            CGRect frame = [[touch view] frame];
            if(counter == 1){
                frame.origin.x = 10;
                frame.origin.y = 90; 
            }
            [[touch view] setFrame:frame]; 

我在触摸开始时增加了我的计数器。我检查了 3 个计数器的 if 条件

【问题讨论】:

  • 嗯...减少触摸结束?
  • 嗨,欢迎来到 SO。 :) 您能否在此处发布一些您编写的代码或您在什么时候未能实现它。
  • - (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event { [self.view setMultipleTouchEnabled:NO]; UITouch *touch = [触摸任何对象]; if ([touch view] == option1View || [touch view] == option2View || [touch view] == option3View ||[touch view] == option4View) { CGRect frame = [[touch view] frame];如果(计数器 == 1){ frame.origin.x = 10; frame.origin.y = 90; } [[触摸视图] setFrame:frame];我在触摸开始时增加了我的计数器。我检查了 3 个计数器的 if 条件

标签: objective-c ios drag-and-drop


【解决方案1】:

Apple 有一个 手势识别器 专门用于拖动。它是UIPangestureRecognizer。它只识别平移手势,而不识别点击或其他任何东西。

这里是文档http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIPanGestureRecognizer_Class/Reference/Reference.html

您可以比使用touchesBegan() 等更轻松地管理平移/拖动手势...

来自文档: UIGestureRecognizerStateEnded 在所有手指都抬起时结束。

您可以检查状态并增加您的计数器。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多