按下取消按钮时如何重设标记视图的位置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按下取消按钮时如何重设标记视图的位置?相关的知识,希望对你有一定的参考价值。

我有一个markerView,您可以抓住它并四处移动。我在其中添加了panGesture


let panGesture = UIPanGestureRecognizer(target: self, action: #selector(self.handleDraggedView(_:)))
        fanMenu.addGestureRecognizer(panGesture)

要拖动视图并更新其位置:

    @objc func handleDraggedView(_ sender: UIPanGestureRecognizer)
        if let marker = documentationMarkers.first(where: $0.documentationId == documentationPressed.id) 
            if(fanMenu.isOpen && marker.documentationType == "DEFAULT") 
                self.viewForTilingView.bringSubview(toFront: marker)

                let translation = sender.translation(in: self.viewForTilingView)
                marker.center = CGPoint(x: marker.center.x + translation.x, y: marker.center.y + translation.y)

                let point = viewForTilingView.convert(marker.center, to: scrollView)
                fanMenu.center = CGPoint(x: point.x,
                                         y: point.y)
                sender.setTranslation(CGPoint.zero, in: self.viewForTilingView.superview)
                print("Startpoint-X: \(point.x)", "Startpoint-Y: \(point.y)")

                if(sender.state == .ended) 

                    print("Endpoint-X: \(point.x)", "Endpoint-Y: \(point.y)")

                    if let documentation = documentations.first(where: $0.id == marker.documentationId) 
                        let levelZoom : CGFloat = pow(2.0, CGFloat(viewForTilingView.tileProvider!.levelsOfDetail - 1))

                        let positionX = Int(marker.center.x * levelZoom)
                        let positionY = Int(marker.center.y * levelZoom)

                        _ = updatePosition(documentation: documentation, positionX: positionX, positionY: positionY)
                        documentationAdded(doc: documentation, update: true)
                    
                
            
        
    

  • 我的起点和终点都是正确的。当我长按我的标记时,它会打印正确的起点,而当我将其释放到其他位置时,它将给出正确的终点。
  • 我在标记视图中添加了一些按钮。其中两个是cancel

confirm按钮。在switch case语句中,它检查选择了哪个按钮。如果选择了一致性按钮,并且在标记周围移动了标记,则位置会更新(=不执行任何操作都会导致其始终更新),但是,选择取消按钮后,则不应更新位置并将其重置为旧位置。
func contextMenuButtonClicked(buttonId: String) 
        let doc = documentationPressed
        switch buttonId 
        case "main":
           break

        case "cancelButton":

        //update to the old position    

我的问题是,当用户按下取消按钮时,如何获得标记视图的旧位置并将其放置到起始位置。

我有一个markerView,您可以抓住它并在其中移动。我添加了一个panGesture。让panGesture = UIPanGestureRecognizer(target:self,action:#selector(self.handleDraggedView(_ :)))...

答案

您可以通过在声像状态之间切换来存储标记位置。

以上是关于按下取消按钮时如何重设标记视图的位置?的主要内容,如果未能解决你的问题,请参考以下文章

Swift:当按下按钮时更改按钮样式并重设其他按钮

每次按下按钮时如何将标签增加一?

按下取消按钮时如何防止 UISearchController 关闭?

了解用户在应用内购买期间何时按下了取消按钮

按下其他连续按钮时如何取消选择按钮?

按下大视图通知按钮后如何敬酒