我有一个连接到@selector的UIView,该方法接收发件人,所以我想知道如何通过查看方法的发件人来判断哪个UIView被按下了。
这是我到目前为止所做的:
UITapGestureRecognizer *singleTypeTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(loadInfoView:)];
可以接收触摸。我也将它应用于几个UIViews, 然后在loadInfoView方法中我有这个。
- (void)loadInfoView:(id)sender
{
UIView *tempTextfieldMask = sender;
NSString *viewName = [[NSString alloc] init];
NSString *oldText = [[NSString alloc] init];
if (tempTextfieldMask == descMask) {
viewName = @"desc";
oldText = descriptionText.text;
} else {
viewName = @"type";
oldText = typeTextF.text;
}
}
我正在将发送者对象分配给我的tempTextfieldMask,然后我在if语句中使用它进行比较,这样我就可以选择正在按下哪一个。
目前这不起作用,一切都转到了else子句。这是最好的方法吗?
答案 0 :(得分:1)
给任何潜在的sender
一个不同的标签,然后只是......
switch([sender tag]) {
case myView1Tag:
// stuff
break;
case myView2Tag:
// stuff
break;
// etc...
视图可以在故事板上给出标签,也可以通过以下方式以编程方式分配:
myView1.tag = myView1Tag;
我强烈建议将所有标记放在enum
:
typedef NS_ENUM(NSInteger MyViewTags) {
myView1Tag = 101,
myView2Tag = 102,
myView3Tag = 103
};