Не обнаружен Нажмите на изображение - PullRequest
0 голосов
/ 01 августа 2011

У меня есть приложение, в котором я вызываю изображение с URL в режиме просмотра изображений.Представление изображения добавляется как подпредставление представления прокрутки.В моем файле реализации я использую этот код

    - (void)loadView {
    [super loadView];


        // add gesture recognizers to the image view
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
    UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
    UITapGestureRecognizer *twoFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTwoFingerTap:)];

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


    NSURL *imgUrl=[[NSURL alloc] initWithString:@"http://www.deviantart.com/download/80153093/Sexy_Kabuto_by_dark_tarou.jpg"];                 
    NSData *imgData = [NSData dataWithContentsOfURL:imgUrl];
    UIImage *img = [UIImage imageWithData:imgData];
    imageView = [[UIImageView alloc] initWithImage:img];



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



    [imageView addGestureRecognizer:singleTap];
    [imageView addGestureRecognizer:doubleTap];
    [imageView addGestureRecognizer:twoFingerTap];

    [singleTap release];
    [doubleTap release];
    [twoFingerTap release];

    [self.imageScrollView addSubview:imageView];
    [imgUrl release]; 

    // 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];
    NSLog(@"%d",imageView.tag);
}

Когда я запускаю на симуляторе, он не обнаружил распознаватель касаний.В окне консоли показывается это сообщение

2011-08-01 10: 01: 46.999 ImageScroll [443: 1907] * __NSAutoreleaseNoPool (): объект 0x4e412d0 класса UIView автоматически освобождается с помощьюнет пула - только утечка Невозможно получить доступ к переменной "doubleTap" "Невозможно получить доступ к переменной" singleTap "Невозможно получить доступ к переменной" doubleTap "Невозможно получить доступ к переменной" doubleTap "

Что является ошибкой в ​​этомкод, чтобы показать этот тип сообщения.

Ответы [ 3 ]

3 голосов
/ 01 августа 2011

Вы проверили "UserInteractionEnabled"? Я считаю, что это НЕТ по умолчанию. (В UIView значением по умолчанию является ДА)

0 голосов
/ 07 августа 2013

Попробуйте это

    [self.view addGestureRecognizer:singleTap];
    [self.view addGestureRecognizer:doubleTap];
    [self.view addGestureRecognizer:twoFingerTap];
0 голосов
/ 01 августа 2011

Попробуйте выполнить автоматическое освобождение вместо немедленного освобождения следующим образом:

//EDIT:1
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
UITapGestureRecognizer *singleTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)] autorelease];
UITapGestureRecognizer *doubleTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)] autorelease];
UITapGestureRecognizer *twoFingerTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTwoFingerTap:)] autorelease];
//EDIT:2
[pool release];

, а затем закомментируйте строки

[singleTap release];
[doubleTap release];
[twoFingerTap release];

Надеюсь, это поможет.

...