Iphone 在UIScrollView中拖动UIButtons?

Iphone 在UIScrollView中拖动UIButtons?,iphone,objective-c,ios,Iphone,Objective C,Ios,我的主视图中有一个scrollview,scrollview上有三个子视图。我的所有子视图中都有UIButton 现在,我想将这些按钮从一个子视图拖动到另一个子视图(拖动按钮时,scrollview不应滚动) 如何做到这一点?我不完全确定此片段是否适用于此特定情况(UIScrollView中的UIControl),但我对UIResponder链的理解建议我应该:) 如果这是可行的(现在无法测试它,但在类似情况下它确实对我有效),那么您应该添加更多代码来处理与拖放相关的事件(可以在UIScroll

我的主视图中有一个scrollview,scrollview上有三个子视图。我的所有子视图中都有UIButton

现在,我想将这些按钮从一个子视图拖动到另一个子视图(拖动按钮时,scrollview不应滚动)


如何做到这一点?

我不完全确定此片段是否适用于此特定情况(UIScrollView中的UIControl),但我对UIResponder链的理解建议我应该:)

如果这是可行的(现在无法测试它,但在类似情况下它确实对我有效),那么您应该添加更多代码来处理与拖放相关的事件(可以在UIScrollView中禁用“剪辑子视图”选项,如果位置与目标的CGRect相交,则将按钮添加到新的superview,如果不相交,则将按钮返回到原始位置,等等)

那么,在这些行中发生了什么呢?当您开始触摸UIButton时,顺序不会到达UIScrollView,因为事件可以作为触摸事件(由UIButton处理)或平移事件(由UIScrollView处理)跟随。当您移动手指时,UIButton的响应程序将取消该事件,因为如果移动手指,没有人知道如何继续

但是,当您向UIButton添加一个手势识别器,该识别器实际上知道手指移动时该做什么时,一切就不同了:UIButton不会消除该事件,UIScrollView也永远不会意识到有触摸在其上移动

我希望我的解释足够准确和全面。如果a)不起作用或b)有不清楚的地方,请告诉我


祝你好运:)

非常感谢你的帮助。按钮移动得很好。同时,我只想为按钮指定准确的点。中心,为了执行准确的移动,我需要使用touchesbeated、touchesMoved、touchesend。使用此方法时,touch功能不起作用。。。。。如何操作?当开始使用触摸开始、移动和结束时,您会忽略所有手势和响应链功能。使用UIPanGestureRecognizer,您可以使用locationInView访问触摸的确切位置,该视图返回相对于作为参数传递的视图(本例中的主视图)的CGPoint。不适合你的情况?
- (void)viewDidLoad { // or wherever you initialize your things
    ...
    // Add swipe event to UIButton so it will capture swipe intents
    UIPanGestureRecognizer *panGR = [[UIPanGestureRecognizer alloc] init];
    [panGR addTarget:self action:@selector(panEvent:)];
    [button addGestureRecognizer:panGR];
    [panGR release];
}

- (void)panEvent:(id)sender {
    button.center = [sender locationInView:self.view];
}
Try
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
       if (allowAppDrag && [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
        return NO;
    }

   return YES;
}