This commit is contained in:
林藍東 2014-10-17 19:22:17 +08:00
parent 655a55dc85
commit faab914a08

View File

@ -211,6 +211,10 @@ void _ASEnumerateControlEventsIncludedInMaskWithBlock(ASControlNodeEvent mask, v
NSParameterAssert(action); NSParameterAssert(action);
NSParameterAssert(controlEventMask != 0); NSParameterAssert(controlEventMask != 0);
// Convert nil to [NSNull null] so that it can be used as a key for NSMapTable.
if (!target)
target = [NSNull null];
// Enumerate the events in the mask, adding the target-action pair for each control event included in controlEventMask // Enumerate the events in the mask, adding the target-action pair for each control event included in controlEventMask
_ASEnumerateControlEventsIncludedInMaskWithBlock(controlEventMask, ^ _ASEnumerateControlEventsIncludedInMaskWithBlock(controlEventMask, ^
(ASControlNodeEvent controlEvent) (ASControlNodeEvent controlEvent)
@ -346,6 +350,9 @@ void _ASEnumerateControlEventsIncludedInMaskWithBlock(ASControlNodeEvent mask, v
// Hand off to UIApplication to send the action message. // Hand off to UIApplication to send the action message.
// This also handles sending to the first responder is target is nil. // This also handles sending to the first responder is target is nil.
if (target == [NSNull null])
[[UIApplication sharedApplication] sendAction:action to:nil from:self forEvent:event];
else
[[UIApplication sharedApplication] sendAction:action to:target from:self forEvent:event]; [[UIApplication sharedApplication] sendAction:action to:target from:self forEvent:event];
} }
} }