0

次のコードを使用してタッチポイントを検出しています。ただし、ユーザーの指が画面から完全に離れると、ハンドラーが呼び出されることはありません。

質問-タッチポイントの数が0になったことを検出するにはどうすればよいですか?

    public MainPage()
    {
        InitializeComponent();

        Touch.FrameReported += new TouchFrameEventHandler(OnFrameReported);
    }

    private void OnFrameReported(object sender, TouchFrameEventArgs e)
    {
        var args = e.GetTouchPoints(null);
4

1 に答える 1

0

私が見つけた最善の答えは、ManipulationCompleteを聞いて、ユーザーが小指を持ち上げていることを通知することです。ただし、その後もいくつかの後続タッチフレームが表示されます。だから私たちはそれらを無視する必要があります...私はそれらの次の秒を無視しました、しかしそれはおそらくやり過ぎです。

    public MainPage()
    {
        ...

        ManipulationCompleted += OnManipulationCompleted;

        ...
    }

    private void OnManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
    {
        OnFrameReported(this, null);

        m_whenStopIgnoringTouchEvents = Environment.TickCount + 1000;
    }

    private void OnFrameReported(object sender, TouchFrameEventArgs e)
    {
        if (e != null)
        {
            if(Environment.TickCount > m_whenStopIgnoringTouchEvents)
            {
                // null indicates the touch point information is relative to the 
                // top left corner
                var args = e.GetTouchPoints(null);
                ...
            }
        }
    }

    private int m_whenStopIgnoringTouchEvents = 0;
于 2012-10-26T01:50:05.917 に答える