Не обнаруживает тап при просмотре изображения

У меня есть приложение, в котором я вызываю изображение из 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"

Какая ошибка в этом коде, чтобы он отображал этот тип сообщения.


person Neha    schedule 01.08.2011    source источник
comment
попробуйте это: - [self.view sendsubviewtoback: yourscrollView]; [Ваш вид прокрутки выводит подвид на передний план: просмотр изображения]; может быть, ваш scrollView появится перед вашим изображением, чтобы он не касался .... попробуйте нажать tp один раз после удаления прокрутки, чтобы вы могли понять, связана ли проблема с ScrollView или нет.   -  person vijay adhikari    schedule 01.08.2011
comment
Это сообщение появляется из-за того, что вы не вызываете свой поток и не инициализируете autoreleasepool... и освобождаете его, когда ваша функция завершается.   -  person AJPatel    schedule 01.08.2011


Ответы (3)


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

//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];

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

person Parth Bhatt    schedule 01.08.2011
comment
это не работает. это показывает это сообщение 2011-08-01 10:01:46.999 ImageScroll[443:1907] * __NSAutoreleaseNoPool(): Объект 0x4e412d0 класса UIView автоматически выпущен без пула - просто утечка - person ram; 01.08.2011
comment
Проверьте это. Я отредактировал свой ответ. Пожалуйста, проверьте строки ниже //EDIT:1 и //EDIT:2 - person Parth Bhatt; 01.08.2011
comment
я не показывал сообщение на консоли, но оно не выполнялось. Когда я загружаю это представление, завершаю программу без какого-либо выполнения - person ram; 01.08.2011
comment
@ram: попробуйте отладить и посмотреть, где на самом деле происходит сбой - person Parth Bhatt; 01.08.2011
comment
в моем коде тапа тоже не обнаружено. когда я нажимаю на изображение, никаких событий не происходит. - person ram; 01.08.2011
comment
я отлаживаю и размещаю [выпуск пула]; в конце функции, но в консоли отображается то же самое сообщение. 01-08-2011 11:49:59.246 ImageScroll[1118:1b07] *** __NSAutoreleaseNoPool(): объект 0x4e33900 класса UIView автоматически выпущен без пула - просто утечка - person ram; 01.08.2011
comment
Что случилось? ты можешь сказать мне, что я делаю? - person ram; 01.08.2011

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

person Adam Eberbach    schedule 01.08.2011
comment
я должен включить это, но я все еще получаю эту проблему. - person ram; 01.08.2011

Попробуй это

    [self.view addGestureRecognizer:singleTap];
    [self.view addGestureRecognizer:doubleTap];
    [self.view addGestureRecognizer:twoFingerTap];
person user2390016    schedule 07.08.2013