1

解決済み - この問題に対する実際の解決策については、Darren の回答をご覧ください。

こんにちは、私の質問を読んでくれてありがとう。

のリリースを検出すると、奇妙な動作が発生し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
  • タッチ ドラッグ アウトサイド-up1stop
  • 内部のタッチアップ-up1stop
  • 外でタッチアップ-up1stop

これらのイベントのいずれも「up1stop」アクションがトリガーされない理由について、私は少し困惑しています。繰り返しますが、この問題は、手のひらをインターフェイスに押し付けて離すか、少し動かすことで再現できます。記録のために、各ボタンのExclusiveTouch を有効にしました。

他のすべては完全に機能しており、この動作が発生するようにする必要がありますが、アプリの性質を考えると、これが解決されない場合、ユーザーにとって非常に危険です.

画面を「パーム」したときにボタンリリースが検出されない理由を誰か説明できますか?

乾杯!

4

1 に答える 1

5

UIControlEventTouchCancelイベントを追跡する必要があります。

最初のUIControlEventTouchCancelタッチがスクロールなどの別のジェスチャとして再解釈された場合、イベントが発生します。

于 2012-06-03T22:30:54.067 に答える