[ios] 프로그래밍 방식으로 UIView에서 제스처 탭을 신속하게 호출하는 방법

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) {
}