Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O iOS 13 agora dá suporte a janelas lado a lado para o mesmo aplicativo no iPad. Isso permite novas experiências e interações de arrastar e soltar entre janelas. Este documento mostra como configurar seu aplicativo para dar suporte a esse recurso e apresenta esses novos recursos.
Configuração do Projeto
Para configurar seu projeto para várias janelas, altere o info.plist para declarar NSUserActivityTypes informando ao iOS que seu aplicativo manipulará atividades desse tipo e UIApplicationSceneManifest habilitará UIApplicationSupportsMultipleScenes para várias janelas e UISceneConfigurations associará sua cena a um storyboard.
<key>NSUserActivityTypes</key>
<array>
<string>com.xamarin.Gallery.openDetail</string>
</array>
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<true/>
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>SceneDelegate</string>
<key>UISceneStoryboardFile</key>
<string>Main</string>
</dict>
</array>
</dict>
</dict>
Abrindo várias janelas
Com seu aplicativo aberto e em execução em um iPad, há algumas maneiras de abrir várias janelas desse aplicativo que o iOS manipula como padrão.
- App Expose – toque no ícone do aplicativo no dock para entrar nesse modo enquanto o aplicativo estiver aberto.
- Deslizar sobre - arraste o ícone do aplicativo do encaixe sobre a parte superior do aplicativo em execução para ter uma janela flutuante.
- Tela dividida – arraste o ícone do aplicativo do encaixe até a borda da tela do iPad para criar uma nova janela lado a lado.
Interações adicionais para entrar em um modo de várias janelas estão disponíveis em seu aplicativo.
Arrastar do Aplicativo – use uma interação de arrastar em seu aplicativo para iniciar um novo NSUserActivity , assim como arrastar o ícone do aplicativo em exemplos anteriores.
Ao usar uma interação de arrastar e soltar, você cria um NSUserActivity e associa os dados a serem passados para a nova janela que está solicitando que o iOS abra para você.
public UIDragItem [] GetItemsForBeginningDragSession (UICollectionView collectionView, IUIDragSession session, NSIndexPath indexPath)
{
var selectedPhoto = GetPhoto (indexPath);
var userActivity = selectedPhoto.OpenDetailUserActivity ();
var itemProvider = new NSItemProvider (UIImage.FromFile (selectedPhoto.Name));
itemProvider.RegisterObject (userActivity, NSItemProviderRepresentationVisibility.All);
var dragItem = new UIDragItem (itemProvider) {
LocalObject = selectedPhoto
};
return new [] { dragItem };
}
No código acima, o objeto de selectedPhoto modelo tem um método para retornar um NSUserActivity chamado OpenDetailUserActivity(). Quando o gesto de arrastar estiver concluído, o UIDragItem com apresentará o userActivity por meio do NSItemProvider.
Ações Explícitas – gestos do usuário em botões ou links oferecem a capacidade de abrir uma nova janela.
No , UIApplication você pode iniciar um novo UISceneSession chamando RequestSceneSessionActivation. Se uma cena existente já existir, você deverá usá-la. Por padrão, uma nova cena será criada para você.
public void ItemSelected(UICollectionView collectionView, NSIndexPath indexPath)
{
var userActivity = selectedPhoto.OpenDetailUserActivity ();
UIApplication.SharedApplication.RequestSceneSessionActivation(
sceneSession: null,
userActivity: userActivity,
options: null,
errorHandler: null
);
}
Neste exemplo, o userActivity é o único valor passado para o RequestSceneSessionActivation método para abrir uma nova janela do aplicativo com base em uma ação explícita do usuário; nesse caso, um ItemSelected manipulador de um UICollectionView.