name of UIView that was touched

◇◆丶佛笑我妖孽 提交于 2019-12-30 07:23:09

问题


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.

UIViews 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.



来源:https://stackoverflow.com/questions/2750993/name-of-uiview-that-was-touched

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!