使用ButterKnife方法,點選事件響應裡面,執行performClick失效,不能再同一幀響應多個點選事件
阿新 • • 發佈:2019-02-06
最近在專案中使用butterKnife繫結點選事件,在一個控制元件點選中,執行另外一個控制元件的點選事件,然後發現失效。檢視butterknife生成的原始碼,發現butterknife的OnClickListener外層被包裹了一層,目的在於防止同一幀被多次點選。
public abstract class DebouncingOnClickListener implements View.OnClickListener { static boolean enabled = true; private static final Runnable ENABLE_AGAIN = newRunnable() { @Override public void run() { enabled = true; } }; @Override public final void onClick(View v) { if (enabled) { enabled = false; v.post(ENABLE_AGAIN); doClick(v); } } public abstract void doClick(View v); }
解決辦法:
①可以延遲執行控制元件的performClick
②使用系統的的繫結事件方法