Работя върху малко приложение, в което имам 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);
}
Търсих в МНОГО уеб страници, адресирайки подобен проблем - и също се опитах да заменя изображението с бутон, използвайки картата като фон. Връща координатите, но след това вече не мога да панорамирам/мащабирам; не са успели да получат както координати, така и функционалност за панорамиране/мащабиране в един и същи код.
Можете ли да ми помогнете тук? Заседнал съм доста дни...
АКТУАЛИЗАЦИЯ: манипулаторът на събития е променен - сега работи :-)