2016-11-22 1 views
0

팝업으로 열어야하는 LongPressGestureRecognizer을 만들었습니다. 그러나 그것은 어떤 이유로 든 dismiss이 아닙니다. 무엇이 이것을 일으킬 수 있습니까?LongpressGesture 끝에서보기를 닫지 않습니다.

나는 이런 식으로 작업을 수행합니다

func longPress(_ longPressGestureRecognizer: UILongPressGestureRecognizer) { 
     let brandInfoVC = BrandInfoViewController(nibName: "BrandInfo", bundle: nil) 


     // Create the dialog 
     let popup = PopupDialog(viewController: brandInfoVC, buttonAlignment: .horizontal, transitionStyle: .bounceDown, gestureDismissal: true) 

     if longPressGestureRecognizer.state == UIGestureRecognizerState.began { 

      let touchPoint = longPressGestureRecognizer.location(in: self.view) 
      if let indexPath = tableView.indexPathForRow(at: touchPoint) { 
       print("LongPressed cell", brands[indexPath.row]) 

       // Present dialog 
       self.present(popup, animated: true, completion: nil) 

      } 
     }else if longPressGestureRecognizer.state == UIGestureRecognizerState.ended{ 
      print("LongPress released")//It does this 
      popup.dismiss()// But it doesn't do this 
     } 

    } 
+0

@matt 슬프게도 아무런 차이가 없었습니다. PopupDialog는 팝업을 쉽게 표시 할 수있는 타사 [library] (https://github.com/Orderella/PopupDialog)입니다. 그러나 PopupDialog 라이브러리없이 xib를로드하고'dismiss (animated : true, completion : nil) '도 시도했지만 제대로 작동하지 않았습니다. –

답변

1

이 작동합니다. 당신이 묘사하지 않은 다른 것이 계속되어야합니다. 아주 간단한 테스트로,이 코드 구현 :

class ViewController: UIViewController { 
    @IBAction func longPress(_ sender : UILongPressGestureRecognizer) { 
     switch sender.state { 
     case .began: 
      self.definesPresentationContext = true 
      let vc = UIViewController() 
      vc.view.backgroundColor = .red 
      vc.modalPresentationStyle = .custom 
      vc.transitioningDelegate = self 
      self.present(vc, animated:true) 
     case .ended: 
      self.dismiss(animated: true) 
     default:break 
     } 
    } 
} 

class MyPresentationController : UIPresentationController { 
    override var frameOfPresentedViewInContainerView: CGRect { 
     return CGRect(x: 60, y: 200, width: 200, height: 200) 
    } 
} 

extension ViewController : UIViewControllerTransitioningDelegate { 
    func presentationController(forPresented presented: UIViewController, 
     presenting: UIViewController?, source: UIViewController) 
     -> UIPresentationController? { 
      return MyPresentationController(presentedViewController: presented, 
              presenting: presenting) 
    } 
} 

을 그리고 이것은 내가 오랫동안 눌러 제스처 인식기가 부착 된 뷰를 누르고 있으면 얻고, 무엇 그때 놓을 때 :

enter image description here

+0

당신은 절대적으로 옳습니다. 그것은 아주 잘 작동하고 있습니다. 나는 그것이 어떤 종류의 해산인지 모른다. :) –