Получаване на координати на допир от изображение, като същевременно се поддържа функцията за панорамиране/мащабиране

Работя върху малко приложение, в което имам UIScrollView - и вътре в него изображение, два пъти по-широко, показващо карта. UIScrollView се прави в Storyboard Editor, изображението се зарежда динамично.

Работи частично - мога да панорамирам, мащабирам и откривам щракване, но ми трябва, за да върне координатите x/y, отразявайки позицията на докосване.

Ето съответната част от моя код:

    UIImage *worldMapImage = [UIImage imageNamed:@"worldmapBig.png"];
    imageView = [[UIImageView alloc] initWithImage:worldmapImage];
    imageView.userInteractionEnabled = YES;
    imageView.multipleTouchEnabled = YES;

    [_worldmap addSubview:imageView];
    _worldmap.userInteractionEnabled = YES;
    [_worldmap setContentSize:[worldMapImage size]];
    [_worldmap setMinimumZoomScale:.5];
    [_worldmap setMaximumZoomScale:1.0];
    [self performSelectorOnMainThread:@selector(didLoadImageInBackground:) withObject:imageView waitUntilDone:YES]; // After loading, initially zoom out

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected:)];
    tapGesture.numberOfTapsRequired = 1;
    tapGesture.numberOfTouchesRequired = 1;
    [imageView addGestureRecognizer:tapGesture];
}

-(void)tapDetected:(UIGestureRecognizer*)recognizer{
    UIView *myView = [recognizer view]; <--
CGPoint touch = [recognizer locationInView:myView]; <--
NSLog(@"%f", touch.x);
}

Търсих в МНОГО уеб страници, адресирайки подобен проблем - и също се опитах да заменя изображението с бутон, използвайки картата като фон. Връща координатите, но след това вече не мога да панорамирам/мащабирам; не са успели да получат както координати, така и функционалност за панорамиране/мащабиране в един и същи код.

Можете ли да ми помогнете тук? Заседнал съм доста дни...

АКТУАЛИЗАЦИЯ: манипулаторът на събития е променен - ​​сега работи :-)


person Anders    schedule 29.09.2013    source източник
comment
Сега работи - не разбрах как да използвам UIGestureRecognizer. Ако изпратиш като отговор, ще затворя темата. Мерси приятел.   -  person Anders    schedule 01.10.2013


Отговори (1)


Може би опитайте това.

Методът -[UIGestureRecognizer locationInView:] изчислява централната точка на всички точки на докосване в жеста.

person neoneye    schedule 01.10.2013