nev*_*ing 116 iphone cocoa-touch objective-c uiactionsheet ios
我有一个UIBarButtonItem打开一个动作表,为用户提供有关做什么的选择.除非我尝试点击"取消"按钮,否则一切都按预期工作.按钮的目标似乎已从应该的位置向上移动.我只能通过单击"取消"和"确定"按钮中间的某个位置来激活它.
我已经尝试过在其他应用程序中的动作表,它们工作正常,所以它不仅仅是我的大拇指.操作表在UIViewController中打开
- (void)showOpenOptions
{
UIActionSheet *sheet = [[UIActionSheet alloc]
initWithTitle:NSLocalizedString(@"Open link in external application?", @"Open in external application")
delegate:self
cancelButtonTitle:NSLocalizedString(@"Cancel", @"Cancel")
destructiveButtonTitle:NSLocalizedString(@"Open Link", @"Open Link")
otherButtonTitles:nil];
[sheet showInView:self.view];
[sheet release];
}
Run Code Online (Sandbox Code Playgroud)
nev*_*ing 190
不要将当前视图控制器的视图传递给操作表,而是使用showFromTabBar:方法UIActionSheet.
正确的方法
这将给出正确的可点击区域:
[actionSheet showFromTabBar:self.tabBarController.tabBar];
Run Code Online (Sandbox Code Playgroud)
错误的方法
这会将可点击区域放在错误的位置(如果您使用的是标签栏或工具栏):
[actionSheet showInView:self.view];
Run Code Online (Sandbox Code Playgroud)
如果您使用的是工具栏,请改用该showFromToolbar:方法.你需要一个工具栏的引用,很可能是一个ivar
[actionSheet showFromToolbar:self.myToolbar];
Run Code Online (Sandbox Code Playgroud)
我的旧答案也有效,但是很黑:
刚刚找到一个可能的答案:
2008年12月1日下午10:22 Tom Saxton:我更多地看了这个bug,这似乎与tabbar有关.
如果从作为UITabViewController的子视图的控制器中调用UIActionSheet的[sheet showInView:self.view],则取消按钮上的命中测试将失败在位于tabbar视图上方的UIActionSheet部分.
如果您改为传入UITabBarController的视图,那么UIActionSheet将按预期运行.
注意:在iPhone OS 2.1及更早版本中,当您传递子视图时,UIActionSheet从选项卡栏的顶部出现,但在2.2中,它从选项卡栏的底部出现,因此覆盖了选项卡视图.
http://openradar.appspot.com/6410780
编辑:当我将视图更改为标签栏的视图时,它可以正常工作
[sheet showInView:self.parentViewController.tabBarController.view];
Run Code Online (Sandbox Code Playgroud)
Vig*_*esh 10
这是修复.试试这个:
[actionsheet showInView:[UIApplication sharedApplication].keyWindow];
Run Code Online (Sandbox Code Playgroud)
我认为三个答案的组合是正确的处理方式:
[actionSheet showFromTabBar:self.tabBarController.tabBar];
Run Code Online (Sandbox Code Playgroud)
即,使用showFromTabBar(这就是为什么它存在),你不需要像Nathan指出的parentViewController(事实上,self.parentViewController.tabBarController.tabBar为我返回nil.
| 归档时间: |
|
| 查看次数: |
24391 次 |
| 最近记录: |