8

画面全体を使用する (つまりUIStatusBarHidden、Info.plist ファイルで true に設定されている) iPad アプリケーションがあります。メイン ウィンドウとメイン ビューのフレームは (0, 0, 768, 1024) に設定されます。メイン ビューではマルチタッチが有効になっています。

ビュー コントローラーには、タッチを処理する次のコードがあります。

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    for (UITouch *touch in touches) {
        CGPoint location = [touch locationInView:nil];
        NSLog(@"touchesMoved at location %@", NSStringFromCGPoint(location));
    }
}

シミュレーターでアプリを実行すると、ほとんど期待どおりに動作します。マウスを画面の一方の端からもう一方の端に移動すると、レポートされる X 値は 0 から 767 になります。レポートされる Y 値は 20 から 1023 になります。ステータスバーがない場合でも、画面の 20 ピクセル。)

奇妙な点は次のとおり です。実際の iPad でアプリを実行すると、X 値は予想どおり 0 から 767 になりますが、報告された Y 値は 0 から 1023 ではなく、-6 から 1017 になります。

シミュレーターで適切に動作しているように見えるという事実は、実際のデバイスのタッチスクリーンが完全に調整されていないことを疑っており、私の場合は単に 6 ピクセル離れた Y 値を報告しているだけです。これが事実であることを誰かが確認できますか?それ以外の場合、Y 値が期待値から 6 ピクセルずれていることを説明できるものは他にありますか?

(数日以内に 2 台目の iPad が必要なので、これを別のデバイスでテストして結果を比較できます。)

4

2 に答える 2

1

UIInterfaceOrientations ごとに異なる値を取得しています

UIInterfaceOrientation ori = [UIApplication sharedApplication].statusBarOrientation;
CGPoint point = [touch locationInView:self];

それを考えると、これはデバイスの問題ではなく、ソフトウェアの問題であると思います。

于 2012-08-24T04:15:14.137 に答える
1

簡単なテストを行ったところ、同じことがわかりました。次のコード以外は何も変更せずに、基本的なビューベースのプロジェクトを開始しました。

(iPadTestsAppDelegate)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];

    // Override point for customization after app launch    
    viewController.view.multipleTouchEnabled = YES;
    viewController.view.userInteractionEnabled = YES;

    [window addSubview:viewController.view];
    [window makeKeyAndVisible];

    return YES;
}

(iPadTestsViewController)

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    for (UITouch *touch in touches) {
        CGPoint location = [touch locationInView:nil];
        NSLog(@"touchesMoved at location %@", NSStringFromCGPoint(location));
    }
}

画面の端に触れると、x 軸に負の数値が表示され、y 軸に 0 が表示されません。最大値と最小値を追跡するためにいくつかの変数を追加すると、これらが iPad のコーナーとして表示されます: {-5, 2}、{758, 2}、{-5, 1019}、{758, 1019}。

于 2010-04-29T17:10:04.427 に答える