我的问题是这样的。用户可以保持网格上的特定图像,一旦用户将图像保持2秒钟,另一个视图在其上方弹出。现在我需要程序工作,因为用户的手指仍然在屏幕上,新创建的视图将随手指移动。现在它的工作原理是,用户将不得不移除他们的手指并将其放回屏幕上,以便视图随其移动。任何想法的人?UIView坚持手指?
回答
如果您使用UILongPressGestureRecognizer
来检测初始按压,您还可以使用它来跟踪移动,因为它会一直调用您的手势操作方法,直到用户抬起手指。
有很多不同的方法可以做到这一点。想到的一点是通过视图控制器本身管理触摸事件。这将要求您实施-canBecomeFirstResponder
以及当然touches[Began|Moved|Ended|Cancelled]:withEvent:
方法。
另一种方法,如果您使用的是UIImageView
来管理和显示单个图像,则可以对其进行子类化并通过它处理触摸事件。在这种情况下,您实际上不会创建一个新的追踪拖动的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
我拥有全部我的代码已经写在所有触摸方法中,所以我将不得不去那条路线。你的意思是我的实现canBecomeFirstResponder,根据文档其唯一的一个属性返回True或False – Esko918 2012-07-12 18:53:47
如果你想让你的视图控制器成为第一响应者(即接收触摸事件),你需要实现 - (BOOL) canBecomeFirstResponder {return YES; }(默认是返回“否”)。在您的视图控制器的'-viewDidAppear:'方法中,添加'[self becomeFirstResponder];'使其成为第一响应者。 – gschandler 2012-07-12 21:46:38
- 1. UIButtons不坚持UIView边缘
- 2. 在手指下拖动UIView
- 3. JPA的新手 - 不坚持每个包含实体时现有成员坚持
- 4. 学说坚持+坚持=插入+插入?
- 5. 用一根手指旋转UIView iPhone,iPad
- 6. 只捕获UIView 2手指UIPanGestureRecognizer
- 7. 获取手指触摸UIView的次数
- 8. 用手指清除UIView的背景色
- 9. 跟踪UIView中的多个手指
- 10. 是否坚持或不坚持每页结果数。如果我们想坚持下去,如何坚持
- 11. 如何坚持
- 12. 让SetDesktopBounds坚持
- 13. 坚持NSOperationQueue
- 14. 坚持fadeTo
- 15. 没有坚持
- 16. 坚持级联
- 17. 主义坚持:
- 18. QxOrm是否可以坚持指向抽象类的指针?
- 19. 坚持大数据
- 20. 级联和坚持
- 21. Quickfixj坚持邮件
- 22. 坚持字典值
- 23. 坚持BroadcastReceiver参考
- 24. HttpPost cookies坚持android
- 25. BoxLayout坚持顶部
- 26. JPA坚持OneToMany ManyToOne
- 27. 坚持@OneToMany名单
- 28. 如何坚持有
- 29. 坚持这个对象不会坚持其参数
- 30. Rails 3手动创建模型并坚持不工作
我已经实现了UILongPressGestureRecognizer。它是这样工作的。 LongPressOnVie然后它使用NSNotification调用视图控制器来创建新的视图,以上我正在按下。它创建视图,但我无法移动视图与删除我的手指,然后再次按下 – Esko918 2012-07-12 18:55:31