我可以在iOS 7中显示actionSheet,但无法在iOS 8环境中显示。有没有办法追踪?
UIActionSheet *_actionSheet = [[UIActionSheet alloc] initWithTitle:@"Account"
delegate:self
cancelButtonTitle:@"Close"
destructiveButtonTitle:@"Log Out"
otherButtonTitles:@"View Account", nil];
[_actionSheet showInView:appDel.window];
答案 0 :(得分:3)
UIActionSheet在iOS 8中已弃用。
要在iOS 8中创建和管理操作表,您应该使用UIAlertController和UIAlertControllerStyleActionSheet的preferredStyle。
请参阅此example。
答案 1 :(得分:1)
UIAlertController * alert= [UIAlertController
alertControllerWithTitle:@"Info"
message:@"You are using UIAlertController"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* ok = [UIAlertAction
actionWithTitle:@"OK"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
[alert dismissViewControllerAnimated:YES completion:nil];
}];
UIAlertAction* cancel = [UIAlertAction
actionWithTitle:@"Cancel"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
[alert dismissViewControllerAnimated:YES completion:nil];
}];
[alert addAction:ok];
[alert addAction:cancel];
[self presentViewController:alert animated:YES completion:nil];
答案 2 :(得分:0)
这显然是iOS 8中的一个回归。我已经提交了一个rdar,请也这样做。
与此同时,您可以使用类别或子类来修复它,您可以在其中检查视图是否为窗口,如果是,则在该窗口中获取rootViewController的视图并使用它。它会那样工作。
答案 3 :(得分:0)
当iOS 8问世时,我遇到了操作表问题。这可能是您所呈现的视图的问题。您能在实际视图而不是窗口中显示它吗?我首先在那里进行实验,最糟糕的情况是,将show方法包装在特定于iOS 7和8的内容中。我开始使用PSTAlertController来管理我的警报和操作表。它支持UIAlertView,UIActionSheet和UIAlertController。它将排除使用哪一个,并允许您访问按钮的阻止操作,同时仍然支持iOS 7和8.值得一看。
答案 4 :(得分:0)
如果其他人看到此问题,则问题实际上是由iOS 8和9在屏幕键盘上显示隐藏在后面引起的,因此您无法实际看到它。你只看到屏幕的其余部分变暗。天才。
简单的解决方案是在显示UIActionSheet
:
[self.view endEditing:true];
这会取消屏幕键盘,让你的美丽动作表再次可见。