1

私はMapViewを持っています..これをViewControllerのViewのサブビューとして追加しました。ViewDidLoad に次のコードがあります。

[self.view addSubview:mapView];
    UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(mapLongPress:)]; 
    longPressGesture.minimumPressDuration = 2; 
    [mapView addGestureRecognizer:longPressGesture];
    [longPressGesture release];

と 、

- (void)mapLongPress:(UILongPressGestureRecognizer *)gestureRecognizer{
    NSLog(@"Gesture");
    if(gestureRecognizer.state == UIGestureRecognizerStateBegan){
        CGPoint touchLocation = [gestureRecognizer locationInView:mapView];

        CLLocationCoordinate2D coordinate;
        coordinate = [mapView convertPoint:touchLocation toCoordinateFromView:mapView];

これらは私が StackOverFlow から得た..しかし、それは機能していません..それ以上のことをする必要がありましたか?

4

3 に答える 3

1

[self.view addSubview:mapView];の後に追加してみてください[mapView addGestureRecognizer:longPressGesture];

UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(mapLongPress:)]; 
longPressGesture.minimumPressDuration = 2; 
longPressGesture.delegate = self;
[self.mapView addGestureRecognizer:longPressGesture];
[self.view addSubview:mapView];
[longPressGesture release];
于 2012-09-05T11:30:23.273 に答える
1

UIGestureRecognizerDelegateを ViewController に追加して、私が指定した上記のコードを実行するだけです!!!

于 2012-09-05T12:04:55.040 に答える
0

これを試して:

    UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc]
                                      initWithTarget:self action:@selector(mapLongPress:)];
lpgr.minimumPressDuration = 2.0;

[self.mapView addGestureRecognizer:lpgr];

これは ARC を使用しているため、現時点でジェスチャーをリリースする必要があるかどうかはわかりません。解放せずにやってみて、解放してやってみる。それがジェスチャーに影響するかどうかを確認してください。

于 2012-09-05T12:09:03.163 に答える