2013-04-14 11 views
5

これは単純な問題ですが、解決するのは難しいです。ボタンが同時に押されないようにする

同じ機能を実行する2つのボタンがあります。

ボタンに異なるタッチイベントを設定しました。これは役に立ちますが、それを同時に押すことは可能です。遅い接続では、さらに簡単になります。

[vote1Btn addTarget:self action:@selector(voteUp:) forControlEvents:UIControlEventTouchUpInside]; 
[vote2Btn addTarget:self action:@selector(voteUp:) forControlEvents:UIControlEventTouchDown]; 
+3

このボタンの機能は何ですか?なぜ「低速接続」に結びついていますか? – J2theC

+1

あなたはメインスレッドでネットワークアクセスを行っているような音です。これは悪いことです。 – rmaddy

+2

なぜ2番目のボタンをタッチダウンするのですか?あなたが両方の上でタッチアップを使用する場合、あなたは大丈夫でしょう。 – Rob

答えて

21

両方のボタンのexclusiveTouchプロパティをYESに設定します。

これで十分でない場合は、操作が開始されると、各ボタンが共有アプリケーションオブジェクトのbeginIgnoringInteractionEventsを呼び出し、操作が終了するとendIgnoringInteractionEventsを呼び出します。

+0

私がこの答えに投票することができれば、私はどんな時間節約になりますか? – chrysAllwood

+0

iOS9ではexclusiveTouchが動作しないようですね? –

+0

iOS10の魅力のように機能します! – ronatory

0
for(UIView* v in self.view.subviews) 
{ 
    if([v isKindOfClass:[UIButton class]]) 
    { 
     UIButton* btn = (UIButton*)v; 
     [yourButton setExclusiveTouch:YES]; 
    } 
} 

これが機能します。

関連する問題