2009-09-03 16 views
6

私は興味のあるジェスチャーの数を追跡するUIControlのサブクラスを書いています。 UIControlEvents列挙のドキュメントでは、UIControlEventApplicationReservedというイベント番号の範囲が「アプリケーションで使用可能」であることが示されています。これは、自分のカスタムイベントにこの範囲の数字を自由に使用できるということですか?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]; 
    } 
} 

それは機能するでしょうか?

+0

これは古い質問ですが、これに進んでいませんでしたか? –

答えて

20

これは古いテーマですが、これに私の答えを追加します。私は本当にあなたが自分のアプリケーションのためにこのマスクを使用することができるかどうかは、私が疑ってもそれを伝えることはできません。

しかし、どうすればそれを使用するかはわかります。スターターの場合、この値はマスクは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イベントのために登録されたすべてのターゲットにすべてのアクションを送信します。そして、あなたは完了です。