如何在touchesbegan事件中获取[触摸视图]的名称。 所以如果是UIView * aaaaaview我会得到aaaaaview作为回报; 谢谢, NONONO
答案 0 :(得分:3)
“UIView * aaaaaView”只是指内存中的一个地方。所以,如果你有
UIView *aView;
UIView *anotherView;
aView = anotherView;
并且用户触摸了UIView,视图的名称是“aView”还是“anotherView”?特别是,UIView不知道用于存储它的变量的名称。
我认为您必须将NSDictionary映射名称初始化为UIViews。
像你这样的-viewDidLoad中的东西,也许是:
yourDictionary = [[NSDictionary alloc] initWithObjectsAndKeys:
@"aaaaaView", aaaaaView, @"viewTwo", viewTwo, nil];
然后在你的活动中你可以说
NSString *viewName = (NSString *) [yourDictionary objectForKey: [touch view]];
答案 1 :(得分:1)
touches
参数是一组UITouch
个实例,它们具有相应的view
属性:
属性的值是最初发生触摸的视图对象。
UIView
没有特定的名称,但你可以检查他们的身份,即:
if([touch view] == aaaview) {}
或使用- (BOOL)isEqual:
。
您也可以使用tag
属性来为其提供有意义的身份:
enum MyViews {
AaaView,
// ...
};
aaaview.tag = AaaView;
// ...
if([touch view].tag == AaaView) {}
如果您确实因为问题中未提及的某些原因需要名称,则可以继承UIView
并引入名称属性。
答案 2 :(得分:1)
也许是这样的:
if ([viewController.nibName isEqualToString:@"aaaaView"])