이슈: UIImageView를 클릭하면 어떤 함수가 전달되도록 하기 위해 extension UIImageView {} 안에 해당 로직을 구현하려고 했다. 이 과정에서 GestureRecognizer를 등록하고 objc 함수를 전달해야 했는데, 일반적으로 함수를 넘기는 방식으로는 objc 함수를 넘길 방법이 없어 다른 방법을 찾아냈다.

 

해결: 

결론부터 말하면 함수 자체를 넘기는 게 아니라 selector 자체를 넘김으로써 그것을 가능하게 만들었다.

예를 들어 다음 코드처럼:

// ViewController

	...
        cell.imageView.addTouchUpEvent(self, #selector(touchUpImageView))
	...
}
    
    @objc func touchUpImageView() {
        print("in")
    }
    



// UIImageView+Extensions.swift
extension UIImageView {

    func addTouchUpEvent(_ targetVC: UIViewController, _ willBeExecuted: Selector) {
        let tapGestureRecognizer = UITapGestureRecognizer(target: targetVC, action: willBeExecuted)
        self.isUserInteractionEnabled = true
        self.addGestureRecognizer(tapGestureRecognizer)
    }
    
}
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom