私は、複数の選択肢、つまり4つの基本ボタンを持つプログラムを用意しています。 (各ボタンには、答えが正しいかどうかを確認するためにIBActionを呼び出すTouchUpInsideイベントがあります)iPhone:複数の選択 - 2つ以上の回答に触れないようにするにはどうすればよいですか?
しかし、私が気づいた問題は、ユーザーが同時に2つのボタンを押すことができることですすべてIBActionを発砲する)。
1つの選択肢しか選択できない方法はありますか?
私は、複数の選択肢、つまり4つの基本ボタンを持つプログラムを用意しています。 (各ボタンには、答えが正しいかどうかを確認するためにIBActionを呼び出すTouchUpInsideイベントがあります)iPhone:複数の選択 - 2つ以上の回答に触れないようにするにはどうすればよいですか?
しかし、私が気づいた問題は、ユーザーが同時に2つのボタンを押すことができることですすべてIBActionを発砲する)。
1つの選択肢しか選択できない方法はありますか?
は、このコードを試してみてください。
button_i.exclusiveTouch = YES;
は、この情報がお役に立てば幸いです。
複数の回答に触れたときの最良の選択肢は、いずれかを受け入れることを拒否することだと思います。たとえば、ユーザーが2つの応答に偶然タッチした場合、どのユーザーが選択するかを推測しようとしません。あなたのアプリはあいまいな入力を拒否する必要があります。
少し時間が過ぎるまで、答えの受け入れを遅らせることで実装することができます.0.2秒または0.3秒です。あなたが最初のものの直後にもう一度触れると、両方を無視します。
これは、ユーザーが正しい答えについての即時のフィードバックを受け取る状況で特に重要と思われます。ユーザーが心を変える機会があれば、もう少し柔軟性があります。たとえば、複数の質問を提示し、すべての質問が完了するまでユーザーが戻って回答を変更できるようにしておけば、最初に触れた回答または最後に回答した回答を明かすことができます。 「送信」ボタンを使用してユーザーが即時フィードバックを受け取った場合でも、同様の戦略を使用することができます。これにより、ユーザーは選択したい回答を解決し、ボタンを押して回答を確定します。
私は、最初のIBActionが起動されたときに、その周囲にブール値を設定しておくことをお勧めします。あなたのビューを設定すると、
BOOL questionWasAnswered;
NO
に設定してください:あなたのインタフェースで
:あなたはこのような何かを行うことができます。次に、各IBActionで、次の操作を実行できます。
if(questionWasAnswered){
return;
}else{
questionWasAnswered = YES;
}
//...Run the rest of your method
これは適切な設計上のアドバイスですが、これは必ずしも問題を解決するものではありません。最初のタップされた回答が受け入れられた唯一の回答であることをユーザが知っている場合、彼らはシステムを破壊しようとし続けることはない。 – Moshe
@Moshe、私は[Hanlonの剃刀](http://en.wikipedia.org/wiki/Hanlon's_razor)に従って設計し、誤った入力を許容するシステムを構築する方が良いと思います。アプリを壊そうとするすべてのユーザーには、単に何度も間違いを犯すものがあります。 – Caleb