Getting High-Fidelity Input with Coalesced Touches

Panther·2021년 8월 1일
0

https://developer.apple.com/documentation/uikit/touches_presses_and_gestures/handling_touches_in_your_view/getting_high-fidelity_input_with_coalesced_touches

"Learn how to support high-precision touches in your app."

앱에서 높은 정확도 터치를 지원하는 방법에 대해 알아봅니다.

Overview

UIKit은 보통 60 Hz 수준에서 앱에 터치를 전달합니다. 몇 가지 기기는 240 Hz 수준까지 터치 정보 리코딩을 할 수 있습니다. 이러한 기기에서 앱이 추가적인 데이터를 요구하지 않는 상황에 UIKit은 추가적인 정보를 전달하지 않습니다. 대신 위치가 마지막으로 기록된 터치만을 반영하는 UITouch 객체에 추가적인 터치를 통합합니다. 그러나 추가적인 정확도를 원하는 앱은 회수할 수 있고, 추가적인 터치 정보를 사용할 수 있습니다.

Important
통합된 터치는 추가적인 정확도를 요구하는 앱에 대해 의도된 것입니다. 그리고 통합된 터치는 관련 비용을 처리할 수 있습니다. 통합된 터치를 처리하는 것은 추가적인 데이터를 모으는 것을 의미하며, 컨텐트에 적용하는 것 또한 의미합니다. 만약 추가 정확도가 필요하지 않다면 UIKit이 뷰 혹은 제스쳐 리코그나이저에 전달하는 터치 객체의 집합 사용을 계속하시기 바랍니다.

Figure 1은 사용자가 애플 펜슬을 기기에서 드래그할 때 발생합니다. UIKit이 앱에 터치 이벤트를 알리는 지점에서 애플 펜슬은 네 가지 터치 지점을 알려줍니다. 하지만 UIKit은 기본값으로 앱에 마지막 터치만을 알려줍니다. 남아있는 세 가지 터치는 통합된 터치로써 전달되고, 앱은 이들을 사용하려면 명시적으로 이들을 회수해줘야 합니다.

Figure 1 Coalesced touches

통합된 터치를 회수하려면, 기존 UITouch 객채를 포함하고 있는 UIEvent 객체의 coalescedTouches(for:) 메소드를 호출해야 합니다. 이 메소드는 마지막 이벤트 이후 모든 터치에 대한 배열을 반환합니다. 여기에는 앱에 실제로 전달된 마지막 UITouch 객체를 포함하고 있습니다. 이벤트를 처리하고자할 때 통합된 터치를 즉시 회수해야 합니다. 이벤트 처리 이후 모든 통합된 터치가 사용 가능한 상태로 남아있다는 보장은 없습니다.

Topics


Example

Implementing Coalesced Touch Support inan App

통합된 터치를 처리하는 간단한 앱 생성 방법을 알아봅니다.

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

0개의 댓글