touchesBegan
从, touchesMoved
,开始touchesEnded
。在你的 UIView 子类中覆盖这些,你就可以开始学习事件系统了。您可以像这样获取事件坐标:
- (void) touchesBegan:(NSSet *) touches withEvent:(UIEvent *) event
{
float x = [[touches anyObject] locationInView:self].x;
float y = [[touches anyObject] locationInView:self].y;
}
然后有很多东西可以在不同视图之间转换坐标等等。一旦你理解了这一点,你就可以使用UIGestureRecognizer
你已经找到的那些你需要的东西。
您将需要一个平移手势识别器来进行拖放。您可以使用locationInView:
选择器UIPanGestureRecognizer
在任何给定时刻找出您所在的位置。
你像这样添加你的手势识别器,而不是你尝试的目标动作:
UIPanGestureRecognizer *dragDropRecog = [[UIPanGestureRecognizer alloc] initWithTarget:yourView action:@selector(thingDragged:)];
[yourView addGestureRecognizer:dragDropRecog];
thingDragged:
然后你必须在你的视图中实现选择器:
- (void) thingDragged:(UIPanGestureRecognizer *) gesture
{
CGPoint location = [gesture locationInView:self];
if ([gesture state] == UIGestureRecognizerStateBegan) {
// Drag started
} else if ([gesture state] == UIGestureRecognizerStateChanged) {
// Drag moved
} else if ([gesture state] == UIGestureRecognizerStateEnded) {
// Drag completed
}
}
您将翻译被拖动到更改位中的视图,并处理结束部分中的放置。