将 initWithCoder: 实现转换为 Swift 时,不会触发手势识别器选择器

Gesture recognizer selector is not triggered when translating initWithCoder: implementation to Swift

我在 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))
    }

这里有什么问题?

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

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

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