제스처가 인식되지 않고 UIView에 탭 제스처를 추가하려고합니다.제스처 이벤트가 UIView에서 작동하지 않습니다.
"iconBadgeView"는 매개 변수에 전달 된 정의 된 크기의 이미지가있는 UIView입니다.
lazy var cardioVascularIcon : IconBadgeView! = {
let iconBadgeView = IconBadgeView(frame: CGRect(x: 0, y: 0, width: 95, height: 95), data:["big":"db_history"])
let tapEvent = UITapGestureRecognizer(target: self, action: #selector(loadNewView(sender:)))
tapEvent.numberOfTapsRequired = 1
iconBadgeView.translatesAutoresizingMaskIntoConstraints = false
iconBadgeView.isUserInteractionEnabled = true
iconBadgeView.addGestureRecognizer(tapEvent)
}()
는 같은 클래스에 부착 된 위임자가 및 기능은 다음과 같이 구현됩니다
func loadNewView(sender: UITapGestureRecognizer) {
print("Tapped")
}
함수 loadNewView가 호출 받고 있지 않습니다. 나는 코드에서 무엇이 잘못되었는지 확신하지 못한다. 누군가가 도울 수 있으면 제발.
나는 아래와 같은 수퍼에 iconBadgeView를 추가하고 : 그것은 지역 변수이기 때문에
override init(frame: CGRect) {
super.init(frame: CGRect.zero)
addSubview(cardioVascularIcon)
cardioVascularIcon.pinToSuperview([.Top])
cardioVascularIcon.pinToSuperview([.Left], constant: 92)
cardioVascularIcon.pinToSuperview([.Right], constant: 92)
}
'tapEvent = UITapGestureRecognizer (목표 보자 : 자기 행동 : #selector (loadNewView (보낸 사람이 :))) tapEvent.addTarget (iconBadgeView, 액션 을 : #selector (loadNewView (보낸 사람이 :))) '왜 반복된다 여기 내 친구 롤. 'UITapGestureRecognizer()'를 의미하는'default constructor '을 가진 제스처를 만들려면'addTarget' 메소드에 selector를 제공해야합니다.하지만 selector와 target을 필요로하는 커스텀 생성자를 사용하고 있기 때문에 그 코드의 두 번째 라인을 가지고 :) – Lamar
중복 라인을 제거하려고 노력했지만 도움이되지 않았다 – user2122178
어떤 오류/문제가 있었나요? 그냥 호기심에 의해 당신의 superView에'iconBadgeView'를 추가 했습니까? 또한'translatesAutoresizingMaskIntoConstraints'를 비활성화 했으므로 화면 상에있는 것으로 생각할 수도 있고 그렇지 않다면 다음 제약 조건을 추가해야합니다 :) – Lamar