UIView가 있고 탭 제스처를 추가했습니다.
let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
tap.delegate = self
myView.addGesture(tap)
테스트 파일에서 프로그래밍 방식으로 호출하려고합니다.
sendActionForEvent
이 기능을 사용하고 있지만 작동하지 않습니다.
myView.sendActionForEvent(UIEvents.touchUpDown)
인식되지 않은 선택기가 인스턴스로 전송되었음을 보여줍니다.
이 문제를 어떻게 해결할 수 있습니까?
답변
다음 UITapGestureRecognizer
과 같이 대상과 동작 으로 초기화해야합니다 .
let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))
myView.addGestureRecognizer(tap)
그런 다음 탭 이벤트가 발생할 때마다 호출되는 핸들러를 구현해야합니다.
@objc func handleTap(_ sender: UITapGestureRecognizer? = nil) {
// handling code
}
따라서 탭 제스처 인식기 이벤트 핸들러를 호출하는 것은 메소드를 호출하는 것만 큼 쉽습니다.
handleTap()
답변
Swift 3 솔루션을 찾고있는 사람
let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))
view.addGestureRecognizer(tap)
view.isUserInteractionEnabled = true
self.view.addSubview(view)
// function which is triggered when handleTap is called
func handleTap(_ sender: UITapGestureRecognizer) {
print("Hello World")
}
답변
대한 스위프트 4 :
let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))
view.addGestureRecognizer(tap)
view.isUserInteractionEnabled = true
self.view.addSubview(view)
// function which is triggered when handleTap is called
@objc func handleTap(_ sender: UITapGestureRecognizer) {
print("Hello World")
}
Swift 4에서는 트리거 된 함수가 Objective-C에서 호출 가능함을 명시 적으로 표시해야하므로 handleTap 함수도 @objc를 추가해야합니다.
@Ali Beadle의 답변보기 : Swift 4 제스처 추가 : override vs @objc
답변
참고 사항-뷰에서 상호 작용을 활성화하는 것을 잊지 마십시오.
let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap))
view.addGestureRecognizer(tap)
// view.userInteractionEnabled = true
self.view.addSubview(view)
답변
1 단계
@IBOutlet var viewTap: UIView!
2 단계
var tapGesture = UITapGestureRecognizer()
단계 : 3
override func viewDidLoad() {
super.viewDidLoad()
// TAP Gesture
tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.myviewTapped(_:)))
tapGesture.numberOfTapsRequired = 1
tapGesture.numberOfTouchesRequired = 1
viewTap.addGestureRecognizer(tapGesture)
viewTap.isUserInteractionEnabled = true
}
단계 : 4
func myviewTapped(_ sender: UITapGestureRecognizer) {
if self.viewTap.backgroundColor == UIColor.yellow {
self.viewTap.backgroundColor = UIColor.green
}else{
self.viewTap.backgroundColor = UIColor.yellow
}
}
산출
답변
탭 제스처 구현
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "touchHappen")
view.userInteractionEnabled = true
view.addGestureRecognizer(tap)
탭이 인식되면이 기능을 호출합니다.
func touchHappen() {
//Causes the view (or one of its embedded text fields) to resign the first responder status.
self.view.endEditing(true)
}
스위프트 3 용 업데이트
let tap = UITapGestureRecognizer(target: self, action: #selector(self.touchHappen(_:)))
view.addGestureRecognizer(tap)
view.userInteractionEnabled = true
func touchHappen(_ sender: UITapGestureRecognizer) {
print("Hello Museer")
}
답변
스위프트 4
let tap = UITapGestureRecognizer(target: self, action: #selector(self.touchTapped(_:)))
self.view.addGestureRecognizer(tap)
@objc func touchTapped(_ sender: UITapGestureRecognizer) {
}