Wiele okien na tabletach iPad
System iOS 13 obsługuje teraz równoległe okna dla tej samej aplikacji na urządzeniu iPad. Umożliwia to nowe środowiska i interakcje przeciągania i upuszczania między oknami. W tym dokumencie pokazano, jak skonfigurować aplikację do obsługi tej funkcji i przedstawić te nowe funkcje.
Konfiguracja projektu
Aby skonfigurować projekt dla wielu okien, zmień element info.plist
, aby zadeklarować, NSUserActivityTypes
że system iOS będzie obsługiwać działania tego typu, oraz UIApplicationSceneManifest
włączyć UIApplicationSupportsMultipleScenes
dla wielu okien i UISceneConfigurations
skojarzyć scenę z scenorysem.
<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>
Otwieranie wielu okien
Po otwarciu i uruchomieniu aplikacji na urządzeniu iPad istnieje kilka sposobów otwierania wielu okien tej aplikacji, która obsługuje system iOS jako domyślną.
- Uwidacznianie aplikacji — naciśnij ikonę aplikacji w doku, aby wprowadzić ten tryb podczas otwierania aplikacji.
- Przesuń w górę — przeciągnij ikonę aplikacji z obszaru Docka na górę uruchomionej aplikacji, aby utworzyć przestawne okno.
- Ekran podzielony — przeciągnij ikonę aplikacji z obszaru Dock do krawędzi ekranu tabletu iPad, aby utworzyć nowe okno obok siebie.
Dodatkowe interakcje umożliwiające wprowadzenie trybu wielu okien są dostępne z poziomu aplikacji.
Przeciągnij z aplikacji — użyj interakcji przeciągania w aplikacji, aby rozpocząć nową NSUserActivity
aplikację tak samo jak przeciąganie ikony aplikacji w poprzednich przykładach.
W przypadku korzystania z interakcji przeciągania i upuszczania należy utworzyć NSUserActivity
element i skojarzyć dane, które mają zostać przekazane do nowego okna z prośbą o otwarcie systemu 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 };
}
W powyższym selectedPhoto
kodzie obiekt modelu ma metodę zwracającą wywołaną OpenDetailUserActivity()
metodę NSUserActivity
. Po zakończeniu gestu przeciągania za UIDragItem
userActivity
pomocą NSItemProvider
elementu .
Jawne akcje — gesty użytkownika na przyciskach lub linkach oferują możliwość otwierania nowego okna.
UIApplication
Za pomocą polecenia możesz rozpocząć nowąUISceneSession
, wywołując polecenie RequestSceneSessionActivation
. Jeśli istniejąca scena już istnieje, należy jej użyć. Domyślnie zostanie utworzona nowa scena.
public void ItemSelected(UICollectionView collectionView, NSIndexPath indexPath)
{
var userActivity = selectedPhoto.OpenDetailUserActivity ();
UIApplication.SharedApplication.RequestSceneSessionActivation(
sceneSession: null,
userActivity: userActivity,
options: null,
errorHandler: null
);
}
W tym przykładzie userActivity
wartość jest jedyną wartością przekazaną do RequestSceneSessionActivation
metody w celu otwarcia nowego okna aplikacji na podstawie jawnej akcji użytkownika. W tym przypadku ItemSelected
procedura obsługi obiektu UICollectionView
.