2017-02-28 10 views
0

나는 Peek 및 Pop을 UIStackView의 내용으로 구현하려고합니다. 문제는 얕은 누르기 중에 오버레이 (흐리게 표시되지 않는 부분)에 올바른 내용이 들어 있지 않다는 것입니다. 그것은 바로 내 손가락 아래이기 때문에 그것은 바로 이곳에서, 그러나 내용이 다른 곳에서보기에서 가져온 것 같다 : exampleUIStackView 엿보기 및 팝 오버레이 글리치

단계 재현 :

  1. 열고 빈 아이폰 OS 프로젝트를 스토리 보드
  2. 를 사용하여
  3. 0
  4. 에 동일한 스택보기의 네면에서 가장 가까운 이웃 제약 조건을 추가 뷰 컨트롤러의 뷰에 UIStackView 추가

  5. 하기의 내용을 교체 다음 코드 ViewController.swift :

    import UIKit 
    
    class ViewController: UIViewController { 
        @IBOutlet var stackView: UIStackView! 
    
        override func viewDidLoad() { 
         super.viewDidLoad() 
    
         registerForPreviewing(with: self, sourceView: stackView) 
    
         let loremIpsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sed feugiat ligula. Sed in rutrum lacus, vel auctor felis. Vivamus molestie felis nisi. Mauris euismod eros vitae libero commodo porttitor. Nam posuere, dui vitae aliquam mollis, quam mauris tempus turpis." 
    
         let label = UILabel() 
         label.numberOfLines = 0 
         label.text = repeatElement(loremIpsum, count: 4).joined(separator: "\n\n") 
         stackView.addArrangedSubview(label) 
        } 
    } 
    
    extension ViewController: UIViewControllerPreviewingDelegate { 
        func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? { 
         previewingContext.sourceRect = CGRect(x: location.x - 50, y: location.y - 50, width: 100, height: 100) 
         return storyboard?.instantiateInitialViewController() 
        } 
    
        func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) { 
         present(viewControllerToCommit, animated: true) 
        } 
    } 
    
  6. 는 어디서나 (물리적) 장치 및 힘 터치에 응용 프로그램을 실행

내가 뭔가 잘못하고 있는가, 또는이 UIKit의 버그?

편집 : example

답변

1

registerForPreviewing(with: self, sourceView: view) 

에 의해

registerForPreviewing(with: self, sourceView: stackView) 

교체 문제를 해결 : 이것은 내가 그것을 행동을 예상하는 방법이다. 나는 아직도 그것이 버그라고 의심하지만, 적어도 이것은 해결책이다.