ios - 将 UIView 与方法 id 发送者进行比较

标签 ios objective-c uiview

我有一个附加到 @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/

相关文章:

ios - 关于 UIColor ,这是一个错误还是什么?

ios - SwiftUI 按钮在 UIHostingController 中不起作用

ios - 在带边框的 UIImageView 中缩小 UIImage

ios - 如何以编程方式制作 UIView,其高度为其中 textLabels 的高度? ( swift )

swift - 创建自定义 UIView

iphone - 为什么我更愿意为每个新线程或 NSOperation 创建一个 NSManagedObjectContext 而不是在主线程上调用核心数据?

ios - Google Drive - 403 权限不足,无法上传文件但无法创建文件夹

objective-c - 输出高频信号耳机

objective-c - 随机放置 UIViews

ios - Swift 中奇怪的断点异常是怎么回事?