我有一个附加到 @selector 的 UIView,该方法接收发送者,所以我想知道如何通过查看方法的发送者来判断按下了哪个 UIView。
这是我到目前为止所做的:
UITapGestureRecognizer *singleTypeTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(loadInfoView:)];
可以接收到触摸。我还将它应用于多个 UIView, 然后在 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 子句。这是最好的方法吗?
最佳答案
给任何潜在的发件人
一个不同的标签,然后...
switch([sender tag]) {
case myView1Tag:
// stuff
break;
case myView2Tag:
// stuff
break;
// etc...
View 可以在 Storyboard 上被赋予标签,或者它们可以通过以下方式以编程方式分配:
myView1.tag = myView1Tag;
我强烈建议将所有标签放在一个 enum
中:
typedef NS_ENUM(NSInteger MyViewTags) {
myView1Tag = 101,
myView2Tag = 102,
myView3Tag = 103
};
关于ios - 将 UIView 与方法 id 发送者进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22676168/