12

私のアプリは UINavigationController を使用していますが、すべてのナビゲーションがゲーム内コント​​ロールによって制御されているため、ツールバーを表示しません。

TabBarController を使用していないため、タブ バーはありません。

私のゲームアプリはランドスケープのみです。

これは、以前に UIActionSheet を作成して提示した方法です。

UIActionSheet *quitGameSheet = [[UIActionSheet alloc] 
     initWithTitle:@"Quit your game?" 
     delegate:self
     cancelButtonTitle:@"Cancel"
     destructiveButtonTitle:@"Yes, quit game"
     otherButtonTitles:nil];
[quitGameSheet showInView:self.view];

ただし、UIActionSheet はほとんど画面外にあり、次のエラーが発生します。

Presenting action sheet clipped by its superview. Some controls might not respond to touches. On iPhone try -[UIActionSheet showFromTabBar:] or -[UIActionSheet showFromToolbar:] instead of -[UIActionSheet showInView:].

ただし、ツールバーもタブバーもありません。

他のいくつかのスタックオーバーフローの回答を試しましたが、どれもうまくいきません:

UIActionSheet の問題

self.navigationController.view から、self.parentViewController.view から、ビューの下部にある作成した CGRect から、self.view.bounds から提示しようとしました。自分。

iOS 6 では動作しますが、iOS 7 では動作しません。iOS 6 で動作し、iOS 7 で失敗するスクリーンショットをいくつか示します。

ここに画像の説明を入力

ここに画像の説明を入力

何か助けはありますか?

更新 1 ---

要求されたビュー階層は次のとおりです。

<UIView: 0xc480380; frame = (0 0; 568 320); autoresize = RM+BM; layer = <CALayer: 0xc4803e0>>
   | <UIImageView: 0xc480410; frame = (0 0; 568 320); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0xc4804a0>>
   | <UIButton: 0xc47b370; frame = (203 107; 159 37); opaque = NO; autoresize = LM+RM+BM; layer = <CALayer: 0xc47a730>>
   |    | <UIImageView: 0xc475150; frame = (0 0; 159 37); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xc4751e0>>
   | <UIButton: 0xc478a00; frame = (203 152; 159 37); opaque = NO; autoresize = LM+RM+BM; layer = <CALayer: 0xc477dd0>>
   |    | <UIImageView: 0xc475030; frame = (0 0; 159 37); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xc4750c0>>
   | <UISwitch: 0xc47dcc0; frame = (313 65; 51 31); opaque = NO; autoresize = LM+RM+BM; layer = <CALayer: 0xc47d180>>
   |    | <_UISwitchInternalViewNeueStyle1: 0xc47e040; frame = (0 0; 51 31); gestureRecognizers = <NSArray: 0xc47ffa0>; layer = <CALayer: 0xc47e140>>
   |    |    | <UIView: 0xc47e4e0; frame = (35.5 0; 15.5 31); clipsToBounds = YES; layer = <CALayer: 0xc47e540>>
   |    |    |    | <UIView: 0xc47e330; frame = (-35.5 0; 51 31); layer = <CALayer: 0xc47e390>>
   |    |    | <UIView: 0xc47e450; frame = (0 0; 35.5 31); clipsToBounds = YES; layer = <CALayer: 0xc47e4b0>>
   |    |    |    | <UIView: 0xc47e3c0; frame = (0 0; 51 31); layer = <CALayer: 0xc47e420>>
   |    |    | <UIView: 0xc47f750; frame = (0 0; 51 31); layer = <CALayer: 0xc47f7b0>>
   |    |    |    | <UIImageView: 0xc47f480; frame = (39 16; 0 0); alpha = 0; userInteractionEnabled = NO; layer = <CALayer: 0xc47f660>>
   |    |    |    | <UIImageView: 0xc47f690; frame = (12 16; 0 0); userInteractionEnabled = NO; layer = <CALayer: 0xc47f720>>
   |    |    | <UIImageView: 0xc47e680; frame = (7 -6; 57 43.5); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xc47f2f0>>
   | <UILabel: 0xc480610; frame = (173 63; 96 29); text = 'Sounds:'; clipsToBounds = YES; opaque = NO; autoresize = LM+RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xc480540>>
   | <UIButton: 0xc473a20; frame = (203 197; 159 37); opaque = NO; autoresize = LM+RM+BM; layer = <CALayer: 0xc473590>>
   |    | <UIImageView: 0xc474f30; frame = (0 0; 159 37); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xc474fc0>>
4

3 に答える 3

6

同じアプリで、画面の左側にあるボタンの一部がタップできないという、まったく関係のない問題のように見える問題がありました。

4インチiPhoneの左側のボタンがタップできない

調査中に、UIWindow が 320x480 であることがわかりました。問題は MainWindow.xib にありました。Xcode は私のためにこの xib を作成しましたが、おそらく Xcode 3 で、数年前のものです。設定を見直すことにしたのですが、「起動時にフルスクリーン」のオプションがあることに気付きました。ドキュメントでそのオプションを調べたところ、デバイスのサイズに合わせてウィンドウのサイズが適切に変更されるように、これを常にオンにする必要があるというメモがありました。これは、iPhone が 1 サイズしかなかったときは問題になりませんでしたが、4 インチ iPhone の登場で問題になりました。

それで、私はそのボックスをチェックし、再起動してビオラ、囲んでいる UIWindow のサイズが適切だったので、これと他の問題の両方が解決されました。

于 2013-09-30T19:32:26.763 に答える
3

私は最近、iOS 7 で発生した同様の問題 (アクション シートは関係ありませんでしたが) をメイン ウィンドウに表示することで解決しました。あなたの場合、それは次のようになります:

[quitGameSheet showInView:[UIApplication sharedApplication].keyWindow];

あなたの場合にもうまくいくことを願っています。

于 2013-10-04T15:36:50.603 に答える
0
[sheet showInView:[UIApplication sharedApplication].keyWindow];
sheet.frame = CGRectMake(0, [UIScreen mainScreen].bounds.size.height-    
sheet.frame.size.height, [UIScreen mainScreen].bounds.size.width, 
sheet.frame.size.height);

リンク: UIActionSheet フォームの問題: user352537

于 2013-10-11T06:25:57.147 に答える