0

「値の変更」イベントが発生したときにメソッドを呼び出す一連のセグメント化されたコントロールがあります。

私の問題は、ユーザーがコントロールで始まるマルチタッチ ジェスチャを実行すると、値が変化することです。4 本の指で上にスワイプする (アプリを切り替える) または 5 本の指でピンチする (ホーム画面に戻る)。「Touch Up Inside」イベントにのみ応答するようにメソッドを変更しようとしましたが、セグメント化されたコントロールはマルチタッチ ジェスチャに関係なく値を変更します。

UISegmentedControl をサブクラス化して、個々のセグメントに「内部でタッチアップ」イベントがある場合にのみ UIControlEventValueChanged が発生するようにする方法はありますか?

どうもありがとう!

4

1 に答える 1

1

問題は、UISegmentedControl が「UIControlEventValueChanged」に応答していることです。内部を修正したときにのみメソッドを呼び出したい場合は、代わりに UISegmentedControl を「UIControlEventTouchUpInside」に応答させます。何かをサブクラス化またはオーバーライドする必要はありません。

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(yourMethod:)
 forControlEvents:UIControlEventTouchUpInside];

利用可能なコントロール イベントは、https ://developer.apple.com/library/ios/documentation/uikit/reference/UIControl_Class/Reference/Reference.html にあります。

于 2013-09-07T07:44:52.247 に答える