2

この動作はiOS5では表示されません。

MKMapViewにビューをオーバーレイしていますが、ユーザーが内部に触れたときに、マップビュー(setScrollEnabled:NO)をロックしてそのUIViewのサイズを変更したいと思います。カスタムジェスチャレコグナイザーをマップビューに追加して、タッチがどこにあるかを確認しました。それがオーバーレイの外側にある場合、ユーザーはマップを移動/ピンチして領域を変更できます。

問題は、scrollEnabledNOに設定すると、でチェックすると常に適切な値が報告されますが、NSLogとにかくマップビューがスクロールすることです。

コード

MyViewController.m

// viewcontroller that contains the map view; this is the delegate as well
@implementation MyViewController
{
    //private vars
    MKMapView *_mapView;
}

//...

- (void)configTheMap
{
    _mapView = //initwithframe
    //add it as subview, bring it to front
    [_mapView setDelegate:self]

    //setup gesture recognizer
    [gesture setTouchesBeganBlock:^(NSSet *touches, UIEvent *event) {
        //if touch is in the circle set _mapView scrollEnabled:NO
    }];

    //touchesMoved, touchesEnded

    [_mapView addGestureRecognizer:gesture];
}

私が言ったように、iOS 5では、これは期待どおりに機能し、定義されたポイントの内側に触れている間、マップビュー領域はロックされます。iOS 6では、信頼性が低くなります。地域がロックされたままになることもあれば、解放されたように見えることもあります。ビューを終了して戻ることはできますが、ビューがどのように機能するかを予測することはできません。touchesMovedにNSLogを追加して、のステータスを確認する_mapViewと、期待どおりscrollEnabledに返さNOれます。

誰か助けてもらえますか?

4

0 に答える 0