How can I get the name of the [touch view] in the touchesbegan event. So if it were UIView *aaaaaview I would get aaaaaview as the return; Thank You, nonono
问题:
回答1:
"UIView *aaaaaView" just refers to a place in memory. So if you had
UIView *aView;
UIView *anotherView;
aView = anotherView;
and the user touched a UIView, would the view's name be "aView" or "anotherView"? In particular, a UIView has no knowledge of the name of the variable you use to store it.
I think you're going to have to initialise an NSDictionary mapping names to UIViews.
Something in your -viewDidLoad like this, perhaps:
yourDictionary = [[NSDictionary alloc] initWithObjectsAndKeys:
@"aaaaaView", aaaaaView, @"viewTwo", viewTwo, nil];
and then in your event you can say
NSString *viewName = (NSString *) [yourDictionary objectForKey: [touch view]];
回答2:
Or maybe something like this:
if ([viewController.nibName isEqualToString:@"aaaaView"])
回答3:
The touches
parameter is a set of UITouch
instances, which have a corresponding view
property:
The value of the property is the view object in which the touch originally occurred.
UIView
s don't have a specific name, but you can just check for their identity, i.e.:
if([touch view] == aaaview) {}
or use - (BOOL)isEqual:
.
You could also use the tag
property instead to give them meaningful identities:
enum MyViews {
AaaView,
// ...
};
aaaview.tag = AaaView;
// ...
if([touch view].tag == AaaView) {}
If you really need names for some reason not mentioned in the question, you could subclass UIView
and introduce a name property.