-4

我的问题是这个。用户可以按住网格上的特定图像,一旦用户按住图像 2 秒钟,另一个视图会在其上方弹出。现在我需要程序工作,因为用户的手指仍然在屏幕上,新创建的视图将随着手指移动。现在它的工作原理是用户必须移开手指并将其放回屏幕上才能使视图随之移动。任何想法的人?

4

2 回答 2

1

如果您用于UILongPressGestureRecognizer检测初始按下,您还可以使用它来跟踪移动,因为它会一直调用您的手势操作方法,直到用户抬起手指。

于 2012-07-12T17:36:18.190 回答
1

你可能有很多不同的方法可以做到这一点。想到的一个是通过视图控制器本身管理触摸事件。这将需要您实施-canBecomeFirstResponder,当然还有touches[Began|Moved|Ended|Cancelled]:withEvent:方法。

另一种方式,如果您使用 anUIImageView来管理和显示单个图像,您可以将其子类化并通过它处理触摸事件。在这种情况下,您实际上不会创建一个新UIView的来跟踪拖动,您可以只使用NSAffineTransform它来赋予它“弹出”的外观并继续使用相同的视图对象跟踪位置。触摸结束后,应用识别变换以恢复其正常大小。变换是可动画的。

编辑

在您的视图控制器实现中,除了实现上述触摸方法外,请执行以下操作以在控制器中实际接收触摸事件:

@implementation MyViewController

...

- (BOOL)canBecomeFirstResponder
{
    return YES;  // Default for UIResponder is NO
}

...

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    ...
    [self becomeFirstResponder];  // ensures view controller receives touch events
}

...

@end
于 2012-07-12T17:41:35.723 回答