当zoomEnabled = NO并调用setRegion(iPhone SDK)时,MKMapview会冻结

时间:2010-08-07 03:36:12

标签: iphone

我是iPhone开发的初学者,我遇到了MKMapView的问题。首先让我描述如何重现问题。

  1. 创建基于视图的应用程序
  2. 在Interface Builder中,添加一个覆盖整个视图区域的MapView
  3. 在Mapview上添加UIButton(尺寸50x50很好,放在角落里)
  4. 将IB中的MapView与代码中的MapView引用相关联
  5. UIButton与处理方法(触碰)相关联。
  6. 这是控制器的代码(MapTest3ViewController.h)

    #import <UIKit/UIKit.h>
    #import <MapKit/MapKit.h>
    
    @interface MapTest3ViewController : UIViewController {
    MKMapView *myMapView;
    }
    
    @property (nonatomic,retain) IBOutlet MKMapView *myMapView;
    - (IBAction) zoomClicked:(id)sender;
    @end
    

    (MapTest3ViewController.m)

    #import "MapTest3ViewController.h"
    
    @implementation MapTest3ViewController
    
    @synthesize myMapView; 
    
    // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
    - (void)viewDidLoad {
    [super viewDidLoad];
    //myMapView.zoomEnabled = NO; 
    }
    
    - (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren't in use.
    }
    
    - (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    }
    
    
    - (void)dealloc {
    [super dealloc];
    }
    
    - (IBAction) zoomClicked:(id)sender
    {
    // when zoom button is clicked, zoom on a specific region
    CLLocationCoordinate2D locationCoordinate2D;
    locationCoordinate2D.latitude = 35.6994;
    locationCoordinate2D.longitude = 139.78;
    MKCoordinateSpan coordinateSpan;
    coordinateSpan.latitudeDelta = 1;
    coordinateSpan.longitudeDelta = 1;
    MKCoordinateRegion coordinateRegion;
    coordinateRegion.center = locationCoordinate2D;
    coordinateRegion.span = coordinateSpan;
    
    [myMapView setRegion:coordinateRegion animated:YES];
    
    }
    
    @end
    

    我在IB中设置了scrollEnabled = YES,zoomEnabled = YES和showUserLocation = YES。该应用程序工作正常。我可以使用捏合进行缩放,我可以滚动,每当我按下“缩放”按钮时,视图区域就会移动到zoomClicked中定义的区域。

    问题

    当我在zoomEnabled=NO中设置viewDidLoad时,我无法再使用捏合手势进行缩放,这很好。但是,如果我“玩”地图,滚动,尝试缩放(当然这不起作用),然后按下缩放按钮,地图会冻结,我无法再滚动或执行任何操作。

    再次,如何复制问题(zoomEnabled=NO

    1. 加载应用程序后,将显示整个地球的地图。做一些捏合手势,滚动地图。 (缩放不起作用)

    2. 按下缩放按钮,将地图设置为特定区域(在代码东京,日本) - &gt;地图冻结了。

    3. 我的设置

      iPhone OS 4.0.1 / iPhone 3GS / XCode 3.2.3 64位/在手机上进行测试。

      非常感谢任何帮助。 感谢。

0 个答案:

没有答案