2010-11-25 12 views
0

私はランドスケープiPhoneアプリで作業しています。 iPhone上でうまく動作しますが、iPadやiPadシミュレータで実行すると、x方向に320を超えるタッチに問題があります。iPadランドスケープで画面の左側に触れる問題

320を超えるUIButtonの多くは、押したときに強調表示されますが、その操作は行いません。

私はsuperviewsにこれを追加します。

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
UITouch *touch = [touches anyObject]; 

CGPoint touchLocation = [touch locationInView:self]; 
NSLog(@"bounds: %1.2f %1.2f touch: %1.2f %1.2f",self.bounds.size.width,self.bounds.size.height,touchLocation.x,touchLocation.y);  
} 

それは出力320より大きいxの値画面の任意の部分は、それがxの320の出力を与える320よりも大きい押すことは決してありません。

UIViewはすべてプログラムによって、UIViewControllerなしで実行されます。私は風景の中にそれを開始するためにPLISTを設定しているとapplicationDidFinishLaunchingに私はこれでビューを回転:

window.transform = CGAffineTransformMakeRotation((M_PI/2.0)); 
window.bounds = CGRectMake(0, 0, 480, 320); 
window.center = CGPointMake(160.0f, 240.0f); 
[window makeKeyAndVisible]; 

すべてのヘルプは高く評価されます。

+0

は、あなたがこれを構築している320ピクセルの幅を持っているかどうかを確認...これはあなたのフレームhierachyのフレームを出力します

UIView *parent = self ; while (parent = [parent superview]) NSLog("parent: %@",NSStringFromCGRect(parent.frame)); 

次のようなコードでそれをデバッグすることができユニバーサルアプリ? iPad用にビルドしたときは、最初に.nibファイルのiPad版を作成する手順を実行しましたか? –

+0

いいえ、iPhone専用アプリとして構築しています。 – Jamvert

+0

'window.bounds = CGRectMake(0、0、480、320);'はアプリケーションの境界を480と320に設定します。だから私はあなたがこれを超えて触れることはできないと思います。 – visakh7

答えて

1

私は同様の問題がありましたが、(OpenGL ESを使用しているゲームだったので)プログラムですべてのウィンドウ、ビュー、およびViewControllerを作成しました。

問題は、最初はビューと同じ矩形でウィンドウを作成したことでした。それを解決するには、単にこのようにウィンドウを作る:

// Always create the window in Portrait mode 
mpWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 

と(ビューを作成します)のViewController:

mpController = [[OViewController alloc] initWithFrame: CGRectMake(mPosX, mPosY, mWidth, mHeight)]; 
// After this line the view will rotate to landscape 
[mpWindow addSubview:mpController.view]; 

・ホープこのことができます!

0

親ビューまたはウィンドウのいずれかに正しいフレームがありません。

タッチはウィンドウからビューに向かって評価されるため、タッチがビューの親のいずれにも属していない場合は停止します。 1は「

関連する問題