WP 실버라이트 앱을 만들면서 터치 입력을 처리할 수 있는 방법은 여러 가지가 있는데, button 등에 존재하는 Click 이벤트 대신에 터치의 시작/드래그/종료를 추적할 수 있는 방법으로 Manipulation 관련 이벤트를 사용하는 방법이 있다. OnManipulationStarted, OnManipulationDelta, OnManipulationCompleted 메서드는 각각 ManipulationStarted, ManipulationDelta, ManipulationCompleted 이벤트가 발생될 때 호출되는 메서드이며, 터치 입력의 시작/드래그/끝을 나타내는 이벤트를 핸들링한다.
이들 메서드는 UIElement 클래스에 가상 메서드로 정의되어 있다. 파생된 클래스에서 재정의하여 사용하도록 되어 있다. 다음 코드를 보자 :
protected override void OnManipulationStarted(ManipulationStartedEventArgs args) { args.Complete(); args.Handled = true; base.OnManipulationStarted(args); }
위 코드처럼 OnManipulationStarted 메서드를 재정의하면 터치 입력을 처리할 수 있게 된다. (위 코드를 간단히 테스트해 보려면 Page 클래스에 추가하는 방법이 가장 간단할 것이다) ManipulationStartedEventArgs 타입 인자는 이벤트에 대한 정보를 담고 있는데, 이 인자의 값을 변경하여 이벤트의 처리 방식에 간섭하는 것이 가능하다.
인자의 Complete 메서드는 터치 입력을 완료시켜서 더 이상의 이벤트 발생을 막는 역할을 하는데, 이렇게 터치 입력이 완료되면 터치 드래그 및 완료에 해당하는 ManipulationDelta, ManipulationCompleted 이벤트가 발생하지 않게 된다.
Handled 프로퍼티는 터치 이벤트 처리를 상위 객체로 전달할 지 여부를 나타낸다. 이 값을 true로 지정하게 되면 ‘현재 클래스에서 ManipulationStarted 이벤트를 핸들링하겠다’는 의미가 되어, 부모 클래스에 ManipulationStarted 이벤트가 전달되지 않게 된다. 사용자가 만든 클래스에는 false 값이 지정된 채로 전달된다.
'TechLog' 카테고리의 다른 글
윈도우 폰 7 에뮬레이터의 로그 확인하기 (0) | 2011.10.11 |
---|---|
실버라이트의 저수준 터치 이벤트, Touch.FrameReported (0) | 2011.10.03 |
WP 에뮬레이터의 프레임 측정 카운터 (0) | 2011.10.02 |
'정의로 이동' 기능 활용 (2) | 2011.10.02 |
윈도우 폰에 내장되어 있는 폰트 (0) | 2011.10.01 |