스위프트의 컬렉션보기에 서브 뷰로 ImageView
을 추가했습니다. 이 하위 뷰의 초기 지점은 앵커 포인트가 viewDidLoad()
에 배치되어 있습니다. 그러나보기에서 탭 동작 후에 키보드를 사퇴 한 후 ImageView
은 원래 위치로 돌아갑니다. 이 문제를 어떻게 해결할 수 있을까요?키보드를 사퇴 한 후 하위 동작을 팬 제스처와 함께 계속 유지하려면 어떻게해야합니까?
import UIKit
class MessageViewController: UICollectionViewController,UICollectionViewDelegateFlowLayout {
let imageButton: UIImageView = {
let imageButtonView = UIImageView()
imageButtonView.image = UIImage(named: "image.png")
imageButtonView.layer.cornerRadius = 30
imageButtonView.layer.masksToBounds = true
imageButtonView.isUserInteractionEnabled = true
return imageButtonView
}()
override func viewDidLoad() {
super.viewDidLoad()
//add imageButton
view.addSubview(imageButton)
// recognize tapgesture for removing keyboard
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tap(gesture:)))
self.view.addGestureRecognizer(tapGesture)
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(self.handlePan(gesture:)))
imageButton.addGestureRecognizer(panGesture)
}
func handlePan(gesture: UIPanGestureRecognizer) {
let translation = gesture.translation(in: self.view)
if let view = gesture.view {
view.center = CGPoint(x:view.center.x + translation.x, y:view.center.y + translation.y)
}
gesture.setTranslation(CGPoint.zero, in: self.view)
}
imageButton.translatesAutoresizingMaskIntoConstraints = false
imageButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
imageButton.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: 30).isActive = true
imageButton.heightAnchor.constraint(equalToConstant: 60).isActive = true
imageButton.widthAnchor.constraint(equalToConstant: 60).isActive = true
}
우리가 더 나은 당신의 질문을 이해하는 데 도움이되는 몇 가지 코드와 영상을 공유하세요 조정하지,이 사용하는 경우에만 제약을보십시오. – dmorrow
몇 가지 코드를 추가했습니다. 그것이 내 질문에 대답하는 데 도움이되기를 바랍니다. 이것은 뷰가로드되면 화면의 중간에있는 이미지를 제공합니다. 나중에 나는 그것을 자유롭게 끌 수있다. 그러나 키보드를 사임 한 후에 만 이미지가 원래 위치로 돌아갑니다. – Bob