13

私はこの問題を抱えています:これが私のコードです:

UIActionSheet *popupQuery = [[UIActionSheet alloc] initWithTitle:@"Share the race" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Send with mail" otherButtonTitles:nil];
    popupQuery.actionSheetStyle = UIActionSheetStyleBlackTranslucent;
    [popupQuery showInView:self.view];
    [popupQuery release];

すべて問題ないようです。2つのボタンが正しく表示され、[メールで送信]ボタンは問題ありませんが、キャンセルは上部のクリックのみをキャッチします...ここでは状況を示すショットを示します。

エラークリック!

どうすればこれを解決できますか?

ありがとう:)

4

3 に答える 3

37

私の推測では、拡張の下部UIActionSheetはビューの境界を超えているため、タッチに反応しません。

この理論をテストするには、別のボタンを追加して、上のボタンがすべて正常に機能するかどうかを確認しますが、下のボタンは引き続きこの動作を示します。

この問題を解決するには、ビューが画面の下部まで拡張されていることを確認してください。アプリにtabBarがある場合は、それが問題の疑いになります。showFromTabBar:tabBarの上にシートが必要な場合、またはツールバーからシートを表示する場合に使用できますshowFromToolbar:

あなたがボトムバーを持っていないなら、私は間違っていて、わかりません。

于 2011-07-14T21:10:53.153 に答える
7

アクションシートは、現在のビューではなく、アプリケーションウィンドウのサブビューとして表示する必要があります。

UIActionSheet *actionSheet = [[UIActionSheet alloc] init...];

// ...

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

それは他の人を助けるかもしれません。

ハッピーコーディング:)

于 2013-09-13T21:33:12.700 に答える
2

使用する

[actionSheet showFromTabBar:[[self tabBarController] tabBar]];

それ以外の

[actionSheet showInView:self.view];
于 2013-08-22T10:49:29.763 に答える