8

私は、興味のある多くのジェスチャを追跡する UIControl のサブクラスを作成しました。UIControlEvents列挙のドキュメントでは、「アプリケーションで使用できる」UIControlEventApplicationReservedというイベント番号の範囲があると書かれています。これは、この範囲の数値を独自のカスタム イベントに自由に使用できるということですか?

もしそうなら、誰かがイベントを発生させる方法を教えてもらえますか? 私が考えることができる明白な方法はこれです:

enum {
     ...
     MyCustomEvent = 65,
     ...
};

...

UIEvent* customEvent;

...

for (id target in [self allTargets])
{
     for (NSString* action in [self actionsForTarget:target forControlEvent:MyCustomEvent])
     {
          [self sendAction:NSSelectorFromString(action) to:target forEvent:customEvent];
     }
}

それはうまくいきますか?

4

1 に答える 1

21

さて、これは古い主題ですが、これに私の答えを追加します。このマスクを自分のアプリケーションに使用できるかどうかはわかりませんが、疑いがあります.

でも、使い方はしっかり教えてくれます。まず、この値は位置 24、25、26、および 27 のビットをマスクします。このビットのみを使用する独自の列挙型を作成する必要があります。たとえば、次のようになります。

enum {
    MyPrimaryActionEvent = 1 << 24,
    MySecondaryActionEvent = 1 << 25,
};

それが完了したら、次のアクションに登録できます。

[myButton addTarget:self action:@selector(someAction:) forControlEvents: MyPrimaryActionEvent];

アクション MyPrimaryActionEvent がトリガーされるたびに、self はメッセージ someAction: を受け取ります。そのアクションをトリガーする方法は、ボタン自体次第です。独自の UIControl サブクラスでは、次のように変更をトリガーできます。

[self sendActionsForControlEvents:MyPrimaryActionEvent];

これにより、MyPrimaryActionEvent イベントに登録されたすべてのターゲットにすべてのアクションが送信されます。これで完了です。

于 2010-08-16T14:38:48.447 に答える