Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
iOS 13 teď podporuje souběžná okna pro stejnou aplikaci na iPadu. To umožňuje nové prostředí a interakce přetažení mezi okny. Tento dokument ukazuje, jak nastavit aplikaci tak, aby tuto funkci podporovala, a představuje tyto nové funkce.
Konfigurace projektu
Pokud chcete projekt nakonfigurovat pro více oken, můžete změnit info.plist prohlášení o tom NSUserActivityTypes , že aplikace bude zpracovávat aktivity tohoto typu, a UIApplicationSceneManifest povolit UIApplicationSupportsMultipleScenes více oken a UISceneConfigurations přidružit scénu k scénáře.
<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>
Otevření více oken
Když máte aplikaci otevřenou a spuštěnou na iPadu, existuje několik způsobů, jak otevřít několik oken této aplikace, které iOS zpracovává jako výchozí.
- Zveřejnění aplikace – klepnutím na ikonu aplikace v docku přejdete do tohoto režimu, když je aplikace otevřená.
- Snímek nad – přetažením ikony aplikace z doku nad horní částí spuštěné aplikace vytvořte plovoucí okno.
- Rozdělená obrazovka – přetažením ikony aplikace z docku na okraj obrazovky iPadu vytvořte nové souběžné okno.
Další interakce pro vstup do režimu více oken jsou dostupné v rámci vaší aplikace.
Přetažení z aplikace – pomocí interakce přetažení v aplikaci spusťte novou NSUserActivity stejně jako přetažení ikony aplikace v předchozích příkladech.
Při použití interakce přetažením vytvoříte NSUserActivity a přidružíte data, která se mají předat do nového okna, ve kterém žádáte, aby se pro vás otevřel iOS.
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 };
}
V kódu výše selectedPhoto má objekt modelu metodu pro vrácení volaný NSUserActivityOpenDetailUserActivity(). Jakmile je gesto přetažení dokončeno, UIDragItem s přítomností userActivity přes NSItemProvider.
Explicitní akce – uživatelská gesta na tlačítkách nebo odkazech nabízejí možnost otevřít nové okno.
UIApplication Od vás můžete začít nový UISceneSession voláním RequestSceneSessionActivation. Pokud už existující scéna existuje, měli byste ji použít. Ve výchozím nastavení se pro vás vytvoří nová scéna.
public void ItemSelected(UICollectionView collectionView, NSIndexPath indexPath)
{
var userActivity = selectedPhoto.OpenDetailUserActivity ();
UIApplication.SharedApplication.RequestSceneSessionActivation(
sceneSession: null,
userActivity: userActivity,
options: null,
errorHandler: null
);
}
V tomto příkladu userActivity je jedinou hodnotou předanou RequestSceneSessionActivation metodě, aby se otevřelo nové okno aplikace založené na explicitní akci uživatele; v tomto případě ItemSelected obslužná rutina UICollectionView.