Ошибка UITapGestureReconizer - PullRequest
       1

Ошибка UITapGestureReconizer

0 голосов
/ 22 февраля 2011

Я получаю ошибки с помощью моего UITapGestureReconizer, например "UITapGestureReconizer undeclared". Поскольку UITapGestureReconizer находится внутри конкретного класса, не должен ли он быть объявлен? и как я могу это исправить ... ниже, где он впервые отображается в коде.

- (void)loadView {
    [super loadView];

    // set the tag for the image view
    [imageView setTag:ZOOM_VIEW_TAG];

    // add gesture recognizers to the image view
    UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
    [imageView addGestureRecognizer:doubleTap];
    [doubleTap release];

    UITapGestureRecognizer *twoFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTwoFingerTap:)];
    [imageView addGestureRecognizer:twoFingerTap];
    [twoFingerTap release];

    [doubleTap setNumberOfTapsRequired:2];
    [twoFingerTap setNumberOfTouchesRequired:2];

        // calculate minimum scale to perfectly fit image width, and begin at that scale
    float minimumScale = [imageScrollView frame].size.width  / [imageView frame].size.width;
    [imageScrollView setMinimumZoomScale:minimumScale];
    [imageScrollView setZoomScale:minimumScale];
}

1 Ответ

2 голосов
/ 22 февраля 2011

UITapGestureRecognizer является частью UIKit, поэтому он должен быть объявлен, если вы импортируете <UIKit/UIKit.h> куда-то. Однако одна проблема, которую я вижу в вашем коде, заключается в следующем:

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
[imageView addGestureRecognizer:doubleTap];
[doubleTap release];

…

[doubleTap setNumberOfTapsRequired:2];

В тот момент, когда вы звоните [doubleTap setNumberOfTapsRequired:2], у вас нет действительной ссылки на doubleTap. Скорее всего, оно сохраняется imageView, но это деталь реализации, на которую вы не можете положиться. Переместите вызов на -setNumberOfTapsRequired: перед вызовом на -release, чтобы убедиться, что это не сломается в будущей версии iOS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...