Mehrere Fenster für iPad
iOS 13 unterstützt jetzt parallele Fenster für dieselbe App auf dem iPad. Dies ermöglicht neue Erfahrungen und Drag-and-Drop-Interaktionen zwischen Fenstern. In diesem Dokument erfahren Sie, wie Sie Ihre Anwendung zur Unterstützung dieses Features einrichten, und diese neuen Features werden vorgestellt.
Projektkonfiguration
Um Ihr Projekt für mehrere Fenster zu konfigurieren, ändern Sie die, um zu info.plist
deklarieren NSUserActivityTypes
, dass iOS Ihre App Aktivitäten dieses Typs verarbeitet, und UIApplicationSceneManifest
um mehrere Fenster zu aktivieren UIApplicationSupportsMultipleScenes
und UISceneConfigurations
Ihre Szene einem Storyboard zuzuordnen.
<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>
Öffnen mehrerer Fenster
Wenn Ihre App auf einem iPad geöffnet und ausgeführt wird, gibt es mehrere Möglichkeiten, mehrere Fenster dieser App, die iOS verarbeitet, standardmäßig zu öffnen.
- App Verfügbar machen : Tippen Sie im Dock auf das App-Symbol, um in diesen Modus zu wechseln, während Ihre App geöffnet ist.
- Slide Over : Ziehen Sie das App-Symbol aus dem Dock über den oberen Rand Ihrer ausgeführten App, um ein schwebendes Fenster zu erhalten.
- Geteilter Bildschirm : Ziehen Sie das App-Symbol vom Dock an den Rand des iPad-Bildschirms, um ein neues paralleles Fenster zu erstellen.
Zusätzliche Interaktionen zum Wechseln in einen Modus mit mehreren Fenstern sind in Ihrer Anwendung verfügbar.
Aus App ziehen : Verwenden Sie eine Ziehinteraktion innerhalb Ihrer App, um ein neues NSUserActivity
zu starten, genau wie das Ziehen des App-Symbols in früheren Beispielen.
Wenn Sie eine Drag-and-Drop-Interaktion verwenden, erstellen Sie ein NSUserActivity
und ordnen die Daten dem neuen Fenster zu, das Sie iOS für Sie öffnen möchten.
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 };
}
Im obigen Code verfügt das selectedPhoto
Modellobjekt über eine -Methode, um einen NSUserActivity
namens OpenDetailUserActivity()
zurückzugeben. Wenn die Ziehgeste abgeschlossen ist, ist die UIDragItem
mit über userActivity
NSItemProvider
vorhanden.
Explizite Aktionen : Benutzergesten auf Schaltflächen oder Links bieten die Möglichkeit, ein neues Fenster zu öffnen.
Über können UIApplication
Sie eine neue UISceneSession
starten, indem Sie aufrufen RequestSceneSessionActivation
. Wenn bereits eine vorhandene Szene vorhanden ist, sollten Sie diese verwenden. Standardmäßig wird eine neue Szene für Sie erstellt.
public void ItemSelected(UICollectionView collectionView, NSIndexPath indexPath)
{
var userActivity = selectedPhoto.OpenDetailUserActivity ();
UIApplication.SharedApplication.RequestSceneSessionActivation(
sceneSession: null,
userActivity: userActivity,
options: null,
errorHandler: null
);
}
In diesem Beispiel ist der userActivity
einzige Wert, der an die RequestSceneSessionActivation
-Methode übergeben wird, um ein neues Fenster der Anwendung basierend auf einer expliziten Benutzeraktion zu öffnen. In diesem Fall ein ItemSelected
Handler eines UICollectionView
.