Swift

时间:2016-07-10 07:06:49

标签: ios swift uitableview swift2

我有一个表视图,在表视图外面,我有一个视图在表视图之外。我试图将元素从表视图拖放到Drop视图。 View看起来像这样。

enter image description here

有一个Table View,如图所示。我想要完成的是,当用户长时间按下表视图中的一行时,我需要将所选项拖放到可放置区域中。在长按时我创建了行的快照并添加为子视图,现在我正在尝试将子视图拖动到拖放区域。我无法做到这一点。任何人都可以帮我解决这个问题。

  var stateDropBoard = CGRectContainsPoint(ingBoardDropView.frame, touchPoint)

    if(stateDropBoard)
    {
       print("DROPPED")            
    }

我无法让它发挥作用。有没有办法完成我正在做的事情。

1 个答案:

答案 0 :(得分:0)

在父视图上使用touches ends方法。在此方法内部运行测试以检查用户是否在绿色视图顶部放置了项目。

    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

      CGPoint location = [[touches anyObject] locationInView:self.view];
      CGRect fingerRect = CGRectMake(location.x-5, location.y-5, 10, 10);

      for(UIView *view in self.view.subviews){
         CGRect subviewFrame = view.frame;

         if(CGRectIntersectsRect(fingerRect, subviewFrame)){
            // this is your touched view
        }

      }

   }

这是你问的快速版!几乎没有优化。

 override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
        let touch = touches.first! as UITouch
        let location = touch.locationInView(self.view)
        let hitTest =  self.targetView.hitTest(location, withEvent:event )

        if (hitTest != nil) {
            print("User finished touch inside your target view!")
        }else{
            print("User finished touch outside your target view");
        }

    }

注意:确保您的目标视图具有正确的约束。

我猜你可以从这里拿走它。希望这会有所帮助。