web-dev-qa-db-ja.com

UIActionSheetの問題

アプリを実行してアクションシートのボタンをクリックすると、次のように表示されます:

スーパービューで切り取られたアクションシートを提示します。一部のコントロールはタッチに反応しない場合があります。 iPhoneでは、-[UIActionSheet showInView:]の代わりに-[UIActionSheet showFromTabBar:]または-[UIActionSheet showFromToolbar:]を試してください。

どうすれば修正できますか?

36
Joaquin McCoy

これを試してみてください、それは私にとって完璧に機能しました:

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

[MyActionSheet showInView:super.view];または、UITabBarまたはUIToolbarがある場合は、それが示唆するように、[MyActionSheet showFromTabBar:self.tabBarController.tabBar];または[MyActionSheet showFromToolBar:self.toolbar];

28
Fred

このコントローラにはデフォルトで上部ナビゲーションバーがあるため、UINavigationViewControllerを使用している場合は、[actionSheet showInView:self.parentViewController.view];ではなくself.viewを使用するように解決する必要があります。

12
conecon
    [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);

これで問題が解決するはずです。

5
LeverkusenFan

私はほぼ同じケースを次の方法で解決しました:

YourAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[actionSheet showFromTabBar:delegate.tabBarController.tabBar];

最初に、TabBarController xCodeテンプレートを使用するとします。

1
Raptor

Heres Swift version:

actionSheet.showInView(UIApplication.sharedApplication().keyWindow)
0
Esqarrouth

ツールバーはナビゲーションコントローラの一部である場合があることに注意してください。 self.navigationController.toolbarでアクセスできます

0
wrightak

上記の答えをすべて試しましたが、役に立ちませんでした。最終的には、アクションシートのアイテムの数を減らすことが唯一の解決策であることがわかりました。

0
Casey Perkins

UIPageViewController-> UINavigationViewController-> TableViewController構造で私のために働いた別の同様のソリューションは次のとおりです:

[actionSheet showInView:self.view.superview];
0
Bruno Belotti

これを使って:

[actionSheet showInView:self.view.window];

これにより、アクションシートがナビゲーションバーの上に表示され、すべてのタップに応答します。ただし、一部の左/右スライドメニューライブラリを使用すると、actionSheetが画面の外に表示される場合があります。ただテストして...

0
Erwan