UIView的名字被触动了

时间:2010-05-01 18:03:12

标签: iphone objective-c cocoa-touch uiview

如何在touchesbegan事件中获取[触摸视图]的名称。 所以如果是UIView * aaaaaview我会得到aaaaaview作为回报; 谢谢, NONONO

3 个答案:

答案 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"])