2012-06-03 91 views
1

已解決 - 請看Darren對此問題的解決方案的迴應。iPhone:按鈕觸摸事件 - 發佈不觸發?

您好,感謝您花時間閱讀我的問題。

我在檢測IBAction UIButton的發佈時遇到了一些奇怪的現象:當我將手掌移過界面時,檢測到按鈕按下,但是釋放不是!我有一組控件,每個控件都有自己的IBAction UIButton。這裏是我的按鈕如何反應和行爲的例子:

- (IBAction)up1start:(id)sender 
{ 
    if(!buttonIsPressed && deviceIsConnected) 
    { 
     NSLog(@"BUTTON UP 1 PRESSED!"); 
     NSString *byteString = @"7E 01"; 
     sendTimer =[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(sendByte:) userInfo:byteString repeats:YES]; 
     buttonIsPressed = true; 
    }else{ 
     NSLog(@"Cant press two buttons or connection is closed"); 
    } 
} 
- (IBAction)up1stop:(id)sender 
{ 
    NSLog(@"BUTTON UP 1 RELEASED!"); 
    [ self buttonRelease ]; 
} 

我已經連接到UIButton up1以下事件 - 有可能超過必要的,由於我正在進行的故障排除工作:

  • 碰落 - up1start
  • 觸摸拖動退出 - up1stop
  • 要UCH將外 - up1stop
  • 觸摸的內心 - up1stop
  • 潤色外 - up1stop

我有點難倒這裏就如何沒有這些事件導致我的「 up1stop「動作被觸發。再次,我可以通過將手掌按在界面上然後釋放或略微移動來重現此問題。爲了記錄,我爲每個按鈕啓用了exclusiveTouch

其他所有工作都很完美,我必須嘗試才能使此行爲發生,但考慮到應用程序的性質,如果未解決該問題,它對用戶來說是非常不安全的。

任何人都可以解釋爲什麼按鈕釋放沒有被檢測到時,我'掌'屏幕?

乾杯!

+0

up1stop方法在正常按下按鈕時觸發,而不是用手掌觸發? – Msencenb

+0

@Minnb - 確實如此。除了這個小錯誤之外,所有的工作都完美無瑕,我可以看似破壞應用程序對我正在執行的操作的理解。我選擇了一個響應,低於該響應證明是我正在尋找的解決方案。通過「掌控」界面,應用程序將我的操作解釋爲「按下」,然後是「滾動」,這不會導致我已經附加的事件發生。通過爲每個「停止」操作添加「UIControlEventTouchCancel」,問題已解決。 –

回答

5

您需要跟蹤UIControlEventTouchCancel事件。

A UIControlEventTouchCancel如果將初​​始觸摸重新解釋爲另一個手勢(例如滾動),則會發生事件。

+0

謝謝您的及時和翔實的迴應!我會現在測試,並將結果發回! –

+0

非常感謝!這工作**完美**!我將'UIControlEventTouchCancel'連接到相應的'Release'動作,現在按鈕不再粘住了!乾杯!我需要收穫一些代表,所以我可以適當地感謝你對這個問題的幫助:) –

+0

+代表快速和現貨答覆,再次感謝! –