0

私はこれSVGKitを iOS 用に使い始めました。のサブクラスを使用していSVGKImageViewます。サブクラス化する前にSVGKImageView、簡単に a を追加できましUITapGestureRecognizerた。しかし、私の要件ではSVGKImageView、親ビューに数十を配置する必要があるため、サブクラスを使用する必要がありました。

これはSVGKImageView、他のビューに透明な部分があり、アルファ= 0のビュー領域でのタッチを無視できるようにしたいためです。そのため、単一のタッチを検出しSVGKImageViewてアルファ値をチェックし、タッチが透明な領域では、タッチイベントを次のビューに転送し、ビューの非透明な領域が見つかるまで続けます)

サブクラス化した後、SVGKImageView追加UITapGestureRecognizerは機能しません。これも

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

私のサブクラスでは呼び出されません。SVGKImageView もuserInteractionEnabledYES に設定しましたが、役に立ちません。

SVGKImageViewサブクラスに渡されるタッチ/タップイベントがない理由を教えてくれる人はい ますか?

以下は私のサブクラスinitメソッドです

- (instancetype)init{

    self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(svgImageTapped:)];
    self.tapGestureRecognizer.numberOfTapsRequired = 1;
    self.tapGestureRecognizer.delegate = self;
    [self addGestureRecognizer:self.tapGestureRecognizer];

    self.imageSVG = [SVGKImage imageNamed:@"SomeFile.svg"];
    self = (Subclass*)[[SVGKLayeredImageView alloc] initWithSVGKImage:self.imageSVG];
    [self sizeToFit];
    self.userInteractionEnabled = YES;

    self = [super init];

    return self;
}
4

1 に答える 1

0

コードを注文してみましょう:

- (instancetype)init{
        self = [super init]; // <--- should go first

        self = (Subclass*)[[SVGKLayeredImageView alloc] initWithSVGKImage:[SVGKImage imageNamed:@"SomeFile.svg"]];

        // self.imageSVG = [SVGKImage imageNamed:@"SomeFile.svg"];
        [self sizeToFit];
        self.userInteractionEnabled = YES;

        return self;
}
于 2015-08-24T09:00:47.210 に答える