2011-05-26 17 views
2

我一個子類爲UIButton的自定義繪製(覆蓋drawRect)和其他一些自定義行爲,其中有下面是相關的(和簡單):IPhone的UIButton - 刷卡與倒是

  1. 如果它被按壓( UIControlEventTouchDown)開啓了「按下」標誌(影響自定義繪圖,有點像「高亮顯示」)。
  2. 如果它在裏面發佈(UIControlEventTouchUpInside),我的OnClick函數被觸發。
  3. 如果它被釋放到外面(UIControlEventTouchUpOutside),標誌「按下」被關閉。

我現在想給按鈕添加一個額外的行爲,以便它可以識別滑動手勢(使用UISwipeGestureRecognizer),並影響按鈕內容。問題是,當預先形成一個輕掃手勢時,TouchDown會觸發,因爲它確實應該導致按鈕出現「按下」,這在刷卡過程中不是我的意圖。

我的問題是如果有一種優雅的方式來避免這種情況。也許類似於滾動視圖的DelaysContentTouches,它將按壓行爲與滑動行爲分開。我能看到的唯一另一種選擇是與我自己的計時器混淆,如果可能,我寧願避免。

謝謝!

回答

0

DannyA。這裏是我的解決方案:

使用也UITapGestureRecognizer

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapAction:)]; 

然後,在didTapAction:選擇

[UIButton setHighlighted:YES]; 

[UIButton performSelector:@selector(setHighlighted:) withObject:NO afterDelay:0.15]; 

,對我工作的罰款實現這一點。