2009-05-14 15 views
2

Von iPhone UIControlLegendes Ziel c Enum Erklärung

UIControlEventAllTouchEvents  = 0x00000FFF, 
UIControlEventAllEditingEvents = 0x000F0000, 
UIControlEventApplicationReserved = 0x0F000000, 
UIControlEventSystemReserved  = 0xF0000000, 
UIControlEventAllEvents   = 0xFFFFFFFF 

Jetzt gehe ich davon aus dem UIControlEventApplication die ‚Reichweite‘ ist, kann ich benutzerdefinierte Steuerelement Ereignisse angeben kann, aber ich habe keine Ahnung, wie es richtig zu machen. Nur wenn ich 0xF0000000 zuweisen, wird das Kontrollereignis korrekt ausgelöst. Wenn ich etwas anderes (0xF0000001) zuweisen, wird das Steuerelement Ereignis ausgelöst, wenn es nicht soll.

Einige Klarstellung:

enum { 
    UIBPMPickerControlEventBeginUpdate = 0x0F000000, 
    UIBPMPickerControlEventEndUpdate = // Which value do I use here? 

}; 

Meine Annahme es eine Reihe basiert auf der Dokumentation zu sein. Die sagen:

Ich nehme an, weil die Dokumentation sagt: Eine Reihe von Control-Event-Werte für die Anwendung verfügbar.

Könnte jemand mir helfen, die Art der in UIControl verwendeten Enum-Deklaration zu verstehen?

Antwort

12

Ich würde denken, dass 0x0F000000 die 4 Bits sind, die Sie zu Ihrer Verfügung haben, um Ihre eigenen Kontrollereignisse zu erstellen.

0x0F000000 = 00001111 00000000 00000000 00000000 

So eine beliebige Kombination von:

0x00000001<<27 = 00001000 00000000 00000000 00000000 
0x00000001<<26 = 00000100 00000000 00000000 00000000 
0x00000001<<25 = 00000010 00000000 00000000 00000000 
0x00000001<<24 = 00000001 00000000 00000000 00000000 

Sie können natürlich oder diese zusammen zu schaffen neue:

0x00000001<<24 | 0x00000001<<25 = 00000011 00000000 00000000 00000000 

So in Ihrem Beispiel:

enum { 
    UIBPMPickerControlEventBeginUpdate = 0x00000001<<24, 
    UIBPMPickerControlEventEndUpdate = 0x00000001<<25, ... 
}; 
+0

Also könnten Sie erklären, was ich ein bisschen mehr sehe? Wie hast du diese Werte bekommen? Warum wird 0x00000001 << 27 00001000 00000000 00000000 00000000 zum Beispiel. Ich bin froh, dass du mein Problem gelöst hast, aber ich möchte auch verstehen, was vor sich geht, damit ich es das nächste Mal selbst lösen kann. – klaaspieter

+0

<< ist der C-Links-Shift-Operator. Es bedeutet: "gebe den Wert zurück, der durch Verschieben des rh-Wertes (0x00000001) erhalten wurde, die lh-Zahl der Binärziffern nach links. In dem Fall nimmt das einzelne Bit die niedrigste Position und verschiebt es 27-mal nach links, um deine Antwort zu erhalten. –

+0

urrr Ich habe meine linke und rechte Seite durcheinander gebracht, aber ich bin mir sicher, dass Sie auf die Idee kommen. " –

-1

Um die Enums zu verwenden, musst du nur bitweise operieren Ionen:

UIControlEventAllEditingEvents | UIControlEventApplicationReserved | UIControlEventApplicationReserved