1

主にランドスケープ指向の iPhone OS 用 のThree20ベースのアプリケーションの開発に興味があります。

Three20サンプル プロジェクト テンプレートをダウンロードして Xcode にロードし、3.0、3.1、3.1.2 SDK を使用して、シミュレーターとデバイスでサンプル プロジェクト アプリを正常に起動しました。プロジェクトのファイルでInitial interface orientationtoを変更すると、プロジェクトは期待どおりにその向きで開始されましたが、画面の左側のタッチ イベントにしか応答しませんでした。まだ縦向きモードであるかのように、タッチ イベントに応答しているように見えます。サンプル プロジェクトに加えた唯一の変更は、ファイルの変更です。Landscape (right home button)Info.plistInfo.plist

非常に単純なものが欠けていますか?横向きで開始するのは非常に基本的なユースケースのようですが、数日間グーグルで検索した後、問題レポートやブログ投稿を提出した人は他に見つかりません.

注: これは、横向きを導入しているときに、はるかに高度なプロジェクトで最初に遭遇した問題ですが、問題の原因として他のコードを除外するために、最も基本的な繰り返し可能な例にバックアップしました。

4

3 に答える 3

3

すべてのビューに正しいautoresizingMaskプロパティ セットがあることを確認してください。ほとんどのビューは境界にクリップしないため、コンテンツはparentViewの境界を超えて表示されます。ただし、タッチは常に境界にクリップされるため、parentView の境界の外側に childView が表示される可能性がありますが、タッチ可能ではありません。

エルゴ: 親ビューが新しい幅に収まらない場合、画面の右側の部分は、タッチできないコンテンツでレンダリングされる可能性があります。

于 2010-02-12T09:50:55.923 に答える
0
- (void)viewWillAppear:(BOOL)animated 
{
 if (![System isIpad])
 {
  if (([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortrait) ||
   ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortraitUpsideDown))
  {
   [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
  }
 }
 [super viewWillAppear:animated];
// self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;
// self.navigationBarTintColor = [UIColor clearColor];
 self.navigationController.navigationBarHidden = YES;
 [[UIApplication sharedApplication] setStatusBarHidden:FALSE];
}
于 2010-09-15T08:16:45.297 に答える
0

特定のビューを使用していますか? 追加する必要があるのと同じくらい簡単かもしれません:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation
{
        return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

ビューコントローラーに。

于 2010-02-03T20:04:25.117 に答える