Com o iOS 8.0, a Apple apresentou o UIAlertController para substituir o UIActionSheet . Infelizmente, a Apple não adicionou nenhuma informação sobre como apresentá-lo. Eu encontrei uma entrada sobre isso no blog da hayaGeek, no entanto, ele não parece funcionar no iPad. A vista é totalmente equivocada:
Extraviado:
Corrigir:
Eu uso o seguinte código para mostrá-lo na interface:
let alert = UIAlertController()
// setting buttons
self.presentModalViewController(alert, animated: true)
Existe outra maneira de adicioná-lo ao iPad? Ou a Apple esqueceu o iPad ou ainda não implementou?
ios
ipad
user-interface
uialertcontroller
Matt3o12
fonte
fonte
No iPad, o alerta será exibido como um popover usando o novo UIPopoverPresentationController , requer que você especifique um ponto de ancoragem para a apresentação do popover usando um sourceView e sourceRect ou um barButtonItem
Para especificar o ponto de ancoragem, você precisará obter uma referência ao UIPopoverPresentationController do UIAlertController e definir uma das propriedades da seguinte maneira:
Código de amostra:
fonte
No Swift 2, você deseja fazer algo assim para mostrá-lo corretamente no iPhone e iPad:
Se você não definir o apresentador, você verá uma exceção no iPad
-[UIPopoverPresentationController presentationTransitionWillBegin]
com a seguinte mensagem:fonte
Atualização para Swift 3.0 e superior
fonte
Atualização de 2018
Acabei de ter um aplicativo rejeitado por esse motivo e uma solução muito rápida foi simplesmente deixar de usar uma folha de ação para um alerta.
Trabalhou um charme e passou nos testadores da App Store muito bem.
Pode não ser uma resposta adequada para todos, mas espero que isso ajude alguns de vocês a sair rapidamente.
fonte
Swift 4 e acima
Eu criei uma extensão
Como usar:
fonte
Aqui está uma solução rápida:
fonte
Swift 5
Eu usei o estilo "actionsheet" no iPhone e "alert" no iPad. O iPad é exibido no centro da tela. Não é necessário especificar o sourceView ou ancorar a visualização em qualquer lugar.
Editar: por sugestão do ShareToD, atualização obsoleta "UI_USER_INTERFACE_IDIOM () == UIUserInterfaceIdiom.pad"
fonte
Para mim, eu só precisava adicionar o seguinte:
fonte
Basta adicionar o seguinte código antes de apresentar sua folha de ações:
fonte