How do i grab the info from a touches event?
I have a UIEvent on a button pre开发者_Python百科ss, and in NSLog this returns as:
<UITouchesEvent: 0x4b13210> timestamp: 3764.51 touches: {(
<UITouch: 0x4b1edf0> phase: Began tap count: 1 window: <UIWindow: 0x4b342b0; frame = (0 0; 320 480); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x4b34400>> view: <UIView: 0x4b356c0; frame = (0 20; 320 460); autoresize = W+H; layer = <CALayer: 0x4b33990>> location in window: {121, 377} previous location in window: {121, 377} location in view: {121, 357} previous location in view: {121, 357}
)}
How can i get to some of this information, such as the layer frame.
when button pressed, all touches associated with an event will pass to function "fntButtonPress" as a set of UITouch objects. What you need to do, is to find you target from them. In this example, as you request, show you how to get layer from touches set.
[YourButton addTarget:self action:@selector(fntButtonPress:event:) forControlEvents:UIControlEventTouchUpInside];
- (void) fntButtonPress:(id)sender event:(id)event {
NSSet *touches = [event allTouches];
UITouch *touch = [touches anyObject];
CALayer *touchedLayer = [touch view].layer;
}
The UIEvent
object has a collection of UITouch
's. The UITouch
object gives you access to window
and view
properties which in turn provide access to the corresponding frame, layer, etc.
References: UIEvent, UITouch
精彩评论