[swift] 사용자 정의 뷰에 액션 처리하기

iOS 앱을 개발하면서 사용자 정의 뷰에 액션을 처리해야 하는 경우가 있습니다. 기본적으로 UIButton 또는 UITapGestureRecognizer를 사용하여 터치 이벤트를 처리할 수 있지만, 사용자 정의 뷰에 터치 이벤트를 처리하는 방법에 대해 알아보도록 하겠습니다.

터치 이벤트 처리를 위한 사용자 정의 뷰 만들기

import UIKit

class CustomView: UIView {
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesBegan(touches, with: event)
        
        // 터치 이벤트 발생 시 처리할 로직을 작성합니다.
        // 예: 뷰를 탭했을 때의 동작
    }
    
    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesEnded(touches, with: event)
        
        // 터치 이벤트가 끝났을 때의 처리할 로직을 작성합니다.
    }
}

위의 예시에서 CustomView 클래스는 UIView를 상속하여 만들어졌으며, touchesBegantouchesEnded 메서드를 오버라이드하여 터치 이벤트를 처리하고 있습니다.

사용자 정의 뷰에 액션 처리 추가하기

class CustomView: UIView {
    var tapAction: (() -> Void)?

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesEnded(touches, with: event)
        
        // 특정 액션이 발생했을 때 클로저를 실행하여 처리합니다.
        tapAction?()
    }
}

위의 코드에서 우리는 tapAction 클로저를 이용하여 특정 액션이 발생했을 때 처리할 수 있도록 하였습니다.

사용 예시

let customView = CustomView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
customView.backgroundColor = .blue
customView.tapAction = {
    print("CustomView 탭 이벤트 발생")
}

위의 예시에서는 CustomView를 생성하고, 배경색을 파란색으로 지정하고, tapAction을 이용하여 특정 액션이 발생했을 때 로그를 출력하도록 하였습니다.

이제 사용자 정의 뷰에 액션 처리하는 방법에 대해 알아보았습니다. 이를 통해 뷰 내부에서 발생하는 액션을 처리하는데 도움이 될 것입니다.

참고문헌: Apple Developer Documentation - UIView Swift.org