[swift] SwiftMessages에서 사용자 입력 처리하기

소개

SwiftMessages는 iOS에서 사용자에게 메시지나 알림을 표시하기 위한 편리한 라이브러리입니다. 하지만 때로는 사용자 입력에 따라 동적으로 처리해야 할 필요가 있을 수 있습니다. 이 글에서는 SwiftMessages에서 사용자 입력을 처리하는 방법에 대해 알아보겠습니다.

사용자 입력 모드 설정하기

SwiftMessages에서는 interactivepassive라는 두 가지의 사용자 입력 모드를 제공합니다.

interactive 모드는 사용자가 메시지 영역을 탭하거나 스와이프하여 메시지를 닫을 수 있도록 해줍니다. 또한, 메시지의 버튼을 눌러 사용자 정의 동작을 수행할 수도 있습니다.

passive 모드는 사용자 입력을 무시하고 메시지 영역을 닫아줄 때까지 자동으로 보여줍니다. 이 모드에서는 사용자 입력을 처리하기 위해서는 별도의 작업이 필요합니다.

메시지를 생성할 때, Config 객체를 사용하여 interactive 모드로 설정할 수 있습니다.

let message = MessageView.viewFromNib(layout: .cardView)
message.configureContent(title: "알림", body: "새 메시지가 도착했습니다.")
message.buttonTitle = "확인"
message.buttonAction = { _ in
    // 버튼이 눌렸을 때 수행할 동작 작성
}
message.configureTheme(.success)
var config = SwiftMessages.defaultConfig
config.presentationStyle = .center
config.dimMode = .blur(style: .dark, alpha: 0.7)
config.interactiveHide = true // 사용자 입력 모드를 interactive로 설정
SwiftMessages.show(config: config, view: message)

사용자 입력 처리하기

interactive 모드에서는 buttonAction 클로저를 사용하여 사용자 입력을 처리할 수 있습니다. 버튼이 눌렸을 때 호출되는 이 클로저를 이용하여 원하는 동작을 수행할 수 있습니다.

message.buttonAction = { _ in
    // 사용자 입력에 따른 동작 작성
}

passive 모드에서는 터치 이벤트를 받아올 MessageView의 서브클래스를 만들어야 합니다. 다음은 TapActionMessageView라는 서브클래스를 만든 예제입니다.

class TapActionMessageView: MessageView {
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesBegan(touches, with: event)
        
        // 터치 이벤트를 처리하는 코드 작성
    }
}

위 코드에서는 touchesBegan(_:with:) 메서드를 오버라이드하여 터치 이벤트를 처리할 수 있는 코드를 작성합니다. 사용자 입력에 따라 원하는 동작을 수행할 수 있습니다.

MessageView의 서브클래스의 인스턴스를 생성한 뒤 위에서 작성한 클로저를 사용하여 버튼을 처리하는 것과 마찬가지로 사용자 입력 처리를 구현할 수 있습니다.

마무리

이제 SwiftMessages에서 사용자 입력을 처리하는 방법에 대해 알아보았습니다. interactive 모드에서는 buttonAction 클로저를 사용하고, passive 모드에서는 MessageView의 서브클래스를 만들어 터치 이벤트를 처리할 수 있습니다. 이를 활용하여 다양한 사용자 입력을 처리하는 알림 메시지를 구현해 보세요.

더 자세한 내용은 SwiftMessages 문서를 참고해주세요.