UIActionsheet en Splitview se bloquea con la actualización de iOS 5.1

Después de actualizar a iOS 5.1 a partir de 5.0, una hoja de acciones presentada desde un button en el popover de un controller splitview está bloqueando la aplicación. El error que produce es: * Fallo de aserción en – [UIActionSheet presentSheetInPopoverView:], / SourceCache/UIKit/UIKit-1914.84/UIActionSheet.m:1816 Entonces, en la vista maestra del controller Splitview, tengo un button de camera que bash para presentar una hoja de acciones de pedir que se select desde el rollo de la camera o desde la camera. ¿Algunas ideas?

if(lpm != null) //Long Press Menu / Action Sheet lpm = null; lpm = new UIActionSheet("Select an action to perform on " + Application.MO.CurrentList[indexPath.Row].Name); foreach(var button in buttonList) lpm.AddButton(button); lpm.CancelButtonIndex = buttonList.Count - 1; lpm.Style = UIActionSheetStyle.BlackTranslucent; lpm.ShowFrom(theList.RectForRowAtIndexPath(indexPath), this.View, true); lpm.Clicked += delegate(object sender, UIButtonEventArgs e2) { lpm.DismissWithClickedButtonIndex(e2.ButtonIndex, false); Application.MO.RespondToLongPressSelection(e2.ButtonIndex); }; 

Me encontré con el mismo problema y lo he solucionado al mostrarlo desde la window principal. Tratar de mostrarlo desde cualquier otra vista o rectángulo cerca del button tocado provoca el mismo locking. El siguiente es el código que se muestra en el medio de la pantalla solo en modo vertical:

  if (UIInterfaceOrientationIsPortrait([UIApplication shanetworkingApplication].statusBarOrientation)) [sortSheet showInView:self.view.window]; else [sortSheet showFromBarButtonItem:sender animated:YES]; // rightBarButton 

Ya se han reportado varios errores de radar . Pero por favor, presente una nueva, para que sepan que les está sucediendo a todos.

Si no está en un controller de vista, use: [UIApplication shanetworkingApplication] .keyWindow para get la window principal para mostrar la vista.

Este es un trabajo potencial, me ha creado un popover completamente independiente e insertado mi UIActionSheet en eso, que convenientemente agrega un efecto de diapositiva realmente genial:

 var buttonList = Application.MO.LoadLongPressOptions(false); if(lpm != null) lpm = null; if(longpresspopover != null) { longpresspopover.Dismiss(false); longpresspopover = null; } longpresspopovercontroller = new UIViewController(); longpresspopovercontroller.View.BackgroundColor = UIColor.Black; longpresspopover = new UIPopoverController(longpresspopovercontroller); longpresspopover.PresentFromRect(theList.Frame, this.View,UIPopoverArrowDirection.Any, true); lpm = new UIActionSheet("Select an action to perform:"); foreach(var button in buttonList) lpm.AddButton(button); lpm.CancelButtonIndex = buttonList.Count - 1; lpm.Style = UIActionSheetStyle.BlackTranslucent; lpm.ShowInView(longpresspopovercontroller.View); longpresspopover.SetPopoverContentSize(lpm.Frame.Size, false); lpm.Clicked += delegate(object sender, UIButtonEventArgs e2) { lpm.DismissWithClickedButtonIndex(e2.ButtonIndex, false); longpresspopover.Dismiss(true); Application.MO.RespondToLongPressSelection(e2.ButtonIndex); };