簡體   English   中英

xamarin.forms中帶有C#的長按檢測器

[英]Long Press Detector with c# in xamarin.forms

我正在制作一個簡單的計算器應用程序,其中的DEL按鈕可刪除視口中的最后一位,但是如果按住一秒鍾,它將刪除視口中的所有內容。 現在,如果我按一次按鈕,則無論我是否按下它都會刪除最后一個數字。 如果再次將其按下(按住或只是定期點按一下),它將清除視口中的所有內容,而我無法輸入其他任何內容。

首先,我像這樣創建計時器:

public System.Timers.Timer timer = new System.Timers.Timer(1);

然后我有一個按下“ DEL”按鈕時的功能:

private void DeletePressed(object sender, EventArgs args)
    {
        timer.Stop();
        timer.Start();
        timer.Elapsed += AllClear;
    }

釋放按鈕時停止計時器並從視口刪除最后一個字符的功能:

        private void DeleteReleased(object sender, EventArgs args)
    {
        timer.Stop();
        if (CalculatorString.Length > 0)
        {
            CalculatorString = CalculatorString.Remove(CalculatorString.Length - 1);
        }
        viewport.Text = CalculatorString;
    }

最后是計時器結束時調用的過程:

private void AllClear(Object Source, System.Timers.ElapsedEventArgs e)
    {
        timer.Stop();
        CalculatorString = "";
        viewport.Text = CalculatorString;
    }

但是我沒有想到會發生任何事情。 我感謝任何提前的幫助:)

Xamarin.Forms(PCL)中沒有直接的方法可以收聽長按。 您必須為每個平台編寫單獨的自定義渲染器,以長按“收聽”並將其傳達給PCL。 您可以參考此鏈接以獲取執行此操作的代碼示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM