1. 程式人生 > >使用ButterKnife方法,點選事件響應裡面,執行performClick失效,不能再同一幀響應多個點選事件

使用ButterKnife方法,點選事件響應裡面,執行performClick失效,不能再同一幀響應多個點選事件

最近在專案中使用butterKnife繫結點選事件,在一個控制元件點選中,執行另外一個控制元件的點選事件,然後發現失效。檢視butterknife生成的原始碼,發現butterknife的OnClickListener外層被包裹了一層,目的在於防止同一幀被多次點選。

public abstract class DebouncingOnClickListener implements View.OnClickListener {
  static boolean enabled = true;
  private static final Runnable ENABLE_AGAIN = new 
Runnable() { @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

②使用系統的的繫結事件方法