[swift] CoreHaptics를 활용한 다중 터치 피드백 구현

iOS 앱에서 사용자에게 터치 이벤트에 대한 피드백을 제공하는 것은 사용자 경험을 향상시키는 데 중요합니다. iOS 13부터 도입된 CoreHaptics 프레임워크는 터치 피드백을 제공하는 데 효과적인 방법을 제시합니다. CoreHaptics를 활용하여 다중 터치를 다루고 터치 피드백을 구현하는 방법을 알아보겠습니다.

CoreHaptics

CoreHaptics는 전역적 또는 지역적 터치 피드백을 제공하기 위한 Apple의 프레임워크입니다. CoreHaptics를 사용하려면 다음 단계를 따릅니다.

  1. CHHapticEngine 인스턴스를 생성합니다.
  2. CHHapticPattern을 정의합니다. 이는 터치 피드백의 진동, 강도 및 지속 시간을 정의합니다.
  3. CHHapticEvent를 사용하여 피드백 이벤트를 정의합니다. 이벤트는 터치 피드백을 생성하는 데 사용됩니다.

다중 터치 피드백 구현

아래 예시 코드는 CoreHaptics를 사용하여 화면의 여러 지점에 다중 터치가 발생했을 때 터치 피드백을 구현하는 방법을 보여줍니다.

import CoreHaptics

class TouchFeedbackManager {

    var engine: CHHapticEngine!

    func setupHaptics() {
        do {
            engine = try CHHapticEngine()
            try engine.start()
        } catch {
            print("Error starting haptic engine: \(error)")
        }
    }

    func provideFeedback(at touchLocations: [CGPoint]) {
        guard engine != nil else { return }
        
        do {
            var events: [CHHapticEvent] = []

            for location in touchLocations {
                let intensity = CHHapticEventParameter(parameterID: .hapticIntensity, value: 1.0)
                let sharpness = CHHapticEventParameter(parameterID: .hapticSharpness, value: 1.0)
                let event = try CHHapticEvent(eventType: .hapticTransient, parameters: [intensity, sharpness], relativeTime: 0)

                let eventLocation = CHHapticLocation(
                    x: Float(location.x / UIScreen.main.bounds.width),
                    y: Float(location.y / UIScreen.main.bounds.height),
                    z: 0
                )
                event.hapticLocation = eventLocation
                events.append(event)
            }

            let pattern = try CHHapticPattern(events: events, parameters: [])
            let player = try engine.makePlayer(with: pattern)
            try player.start(atTime: CHHapticTimeImmediate)
        } catch {
            print("Error playing haptic pattern: \(error)")
        }
    }
}

위의 코드에서 TouchFeedbackManager 클래스는 CoreHaptics 엔진을 설정하고 다중 터치 위치에 대한 피드백을 제공하는 기능을 제공합니다.

CoreHaptics를 활용하여 다중 터치 피드백을 구현하는 방법에 대한 개념과 예시 코드를 살펴보았습니다. 이를 통해 사용자가 앱의 상호작용에 대한 더욱 풍부한 터치 피드백을 경험할 수 있게 됩니다.

더 자세한 내용은 Apple Developer 공식 문서를 참고하시기 바랍니다.