"Learn how to support high-precision touches in your app."
앱에서 높은 정확도 터치를 지원하는 방법에 대해 알아봅니다.
UIKit
은 보통 60 Hz 수준에서 앱에 터치를 전달합니다. 몇 가지 기기는 240 Hz 수준까지 터치 정보 리코딩을 할 수 있습니다. 이러한 기기에서 앱이 추가적인 데이터를 요구하지 않는 상황에 UIKit
은 추가적인 정보를 전달하지 않습니다. 대신 위치가 마지막으로 기록된 터치만을 반영하는 UITouch
객체에 추가적인 터치를 통합합니다. 그러나 추가적인 정확도를 원하는 앱은 회수할 수 있고, 추가적인 터치 정보를 사용할 수 있습니다.
Important
통합된 터치는 추가적인 정확도를 요구하는 앱에 대해 의도된 것입니다. 그리고 통합된 터치는 관련 비용을 처리할 수 있습니다. 통합된 터치를 처리하는 것은 추가적인 데이터를 모으는 것을 의미하며, 컨텐트에 적용하는 것 또한 의미합니다. 만약 추가 정확도가 필요하지 않다면UIKit
이 뷰 혹은 제스쳐 리코그나이저에 전달하는 터치 객체의 집합 사용을 계속하시기 바랍니다.
Figure 1은 사용자가 애플 펜슬을 기기에서 드래그할 때 발생합니다. UIKit
이 앱에 터치 이벤트를 알리는 지점에서 애플 펜슬은 네 가지 터치 지점을 알려줍니다. 하지만 UIKit
은 기본값으로 앱에 마지막 터치만을 알려줍니다. 남아있는 세 가지 터치는 통합된 터치로써 전달되고, 앱은 이들을 사용하려면 명시적으로 이들을 회수해줘야 합니다.
Figure 1 Coalesced touches
통합된 터치를 회수하려면, 기존 UITouch
객채를 포함하고 있는 UIEvent
객체의 coalescedTouches(for:)
메소드를 호출해야 합니다. 이 메소드는 마지막 이벤트 이후 모든 터치에 대한 배열을 반환합니다. 여기에는 앱에 실제로 전달된 마지막 UITouch
객체를 포함하고 있습니다. 이벤트를 처리하고자할 때 통합된 터치를 즉시 회수해야 합니다. 이벤트 처리 이후 모든 통합된 터치가 사용 가능한 상태로 남아있다는 보장은 없습니다.
통합된 터치를 처리하는 간단한 앱 생성 방법을 알아봅니다.
https://developer.apple.com/documentation/uikit/touches_presses_and_gestures/handling_touches_in_your_view/getting_high-fidelity_input_with_coalesced_touches/implementing_coalesced_touch_support_in_an_app
https://velog.io/@panther222128/Implementing-Coalesced-Touch-Support-in-an-App