0

カスタム セルとして UITableView 内に MKMapView があります (質問しないでください ;) - 本当に重要かどうかはわかりません)。これには regionDidChangeAnimated デリゲート メソッドを登録します。このメソッドは、UITableView が読み込まれるときに 3 回呼び出されます。1 回は実際の領域で、次に 2 回は離れた領域で呼び出されます。シミュレーターでは、一貫して中心 (+37.43997405、-97.03125000) の領域を取得します。デバイスでは、マップ ビューを初期化するロケーション マネージャーによって報告されたロケーションに依存しているようです。

regionDidChangeAnimated 呼び出しが 3 回発生するのはなぜですか? そして、最後の 2 つの中心座標がずれているのはなぜですか?

これは、中心座標を取得するために使用するコードです。

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
    CLLocation *l = [[CLLocation alloc] initWithLatitude:self.mapView.centerCoordinate.latitude longitude:self.mapView.centerCoordinate.longitude];
(....)
4

1 に答える 1

1

カスタム テーブル ビュー セル内にマップ ビューを設定し、そのセルをテーブル ビューに追加しました (ただし、マップ ビューがどこにどのように表示されるかは問題ではありません)。

regionDidChangeAnimated:デリゲート メソッドへの予期しない呼び出しは見られません。

次の場合にのみ、このメソッドの呼び出しが表示されます。

  1. ユーザーが地図の位置/ズームを変更する、または
  2. 一部のコードは、マップの中心/範囲を変更します

予期しない通話が表示されていますか? コードを使用して地図の領域 (中心/範囲) を設定していませんか?

于 2010-01-15T20:21:52.553 に答える