将UIView与方法ID发送者进行比较

时间:2014-03-27 00:51:26

标签: ios objective-c uiview

我有一个连接到@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子句。这是最好的方法吗?

1 个答案:

答案 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
};