将 initWithCoder: implementation 转换为 Swift 时未触发手势识别器选择器

Posted

技术标签:

【中文标题】将 initWithCoder: implementation 转换为 Swift 时未触发手势识别器选择器【英文标题】:Gesture recognizer selector is not triggered when translating initWithCoder: implementation to Swift 【发布时间】:2017-06-23 15:40:05 【问题描述】:

我在 Objective-C 中有以下代码需要转换为 Dwift。

- (instancetype)initWithCoder:(NSCoder *)aDecoder

    self = [super initWithCoder:aDecoder];
    if (self) 

        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped)];
        [self addGestureRecognizer:tap];

    
    return self;

我尝试了以下方法,但选择器没有被触发:

  required init?(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)

        let x:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapped))
    

这里有什么问题?

【问题讨论】:

【参考方案1】:

您的 Objective-C 代码调用 addGestureRecognizer。你的 Swift 代码没有。

required init?(coder aDecoder: NSCoder) 
    super.init(coder: aDecoder)

    let x:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapped))
    addGestureRecognizer(x)

【讨论】:

是的,我注意到在我输入问题后。无论如何都会接受。谢谢

以上是关于将 initWithCoder: implementation 转换为 Swift 时未触发手势识别器选择器的主要内容,如果未能解决你的问题,请参考以下文章

将 initWithCoder: implementation 转换为 Swift 时未触发手势识别器选择器

覆盖 initWithCoder 时的无限循环

NSManaged 对象 initWithCoder 错误

如何 initwithCoder 和 encodewithCoder 获取指针的值

UIButton 子类 initWithCoder 中的 setTitleColor:forState 未设置颜色

为啥 UITableViewCell 初始化在 initWithCoder 中不起作用