iOS 6 Beta 3 – hier ist alles neu + Changelog (ständig aktualisierter Artikel) x14

  Mittlerweile mehr als eine Stunde Apple gestartet iOS beta 6 3 für Entwickler von Anwendungen für den App Store und beinhaltete eine Reihe von Änderungen, die meisten davon leider subtil. In diesem Artikel haben wir die wichtigsten Neuigkeiten, aber auch den offiziellen Changelog des Unternehmens aufgelistet.

1. Wieder ein neues Menü für die Kartenanwendung In diesem Artikel finden Sie die Details.

2. Das System, das Sie warnt, wenn eine Anwendung Zugriff auf Ihre Daten aus dem Adressbuch anfordert, wurde verbessert.

3. Viele der Probleme, die Apple TV mit der Netflix-Anwendung, der Fernbedienung, den Diashows oder der YouTube-Anwendung hatte, wurden gelöst.

4. Das Problem wurde behoben, bei dem die Schaltflächen „Annehmen/Ablehnen“ für FaceTime-Anrufe nicht angezeigt wurden.

5. Auf dem iPad-Tablet sind die Safari-Menüs „Verlauf“, „Favoritenliste“ und „Lesen“ jetzt in einer einzigen Registerkarte verfügbar.

6. Der Abschnitt „Datenschutz“ enthält jetzt Symbole für jede einzelne Kategorie.

7. Siri ist schwieriger zu beantworten, aber die Stimme wurde von Apple leicht modifiziert.

8. Benutzer haben die Möglichkeit, E-Mail-Adressen mit der Domain @icloud.com zu registrieren.

9. Der Shared Photo Stream erreicht auch iPhone 3GS und iPod Touch.

10. Die VIP-E-Mail-Funktion erreicht auch den iPod Touch.

11. Siri kann das AssistiveTouch-Menü öffnen.

12. Die Mail-Anwendung verfügt über eine neue Schaltfläche zum Archivieren von E-Mails.

13. Die Kartenanwendung bietet Informationen über den Verkehr in bestimmten Ländern.

14. Wenn Sie eine Anwendung aktualisieren, zeigt Ihnen die Schaltfläche „Updates“ im App Store eine Anzeige über den Fortschritt der Anwendungsinstallation an.

 

Hinweise und bekannte Probleme

Die folgenden Probleme beziehen sich auf die Verwendung von iOS SDK 6.0 zum Entwickeln von Code.

Adressbuch

  • Wenn sich eine App in einem neuen Datenschutzstatus befindet und versucht, einen anzuzeigenABNewPersonViewController, kann der Benutzer diesen Ansichtscontroller nicht ordnungsgemäß schließen, selbst wenn er Zugriff auf Kontakte gewährt. Der Benutzer muss das Beenden der App und einen Neustart erzwingen.
  • Zugriff auf Kontakte anfordern:
    • Benutzer können den Zugriff auf Kontaktdaten für jede einzelne App gewähren oder verweigern. Um Zugriff auf Kontaktdaten anzufordern, rufen Sie die Funktion ABAddressBookRequestAccessWithCompletion auf, nachdem Sie aufgerufen haben ABAddressBookCreateWithOptions Funktion. Die Funktion ABAddressBookRequestAccessWithCompletion blockiert die App nicht, während der Benutzer aufgefordert wird, Zugriff zu gewähren oder zu verweigern. Bis der Zugriff gewährt wurde, ist die ABAddressBookRefDas Objekt enthält keine Kontakte und jeder Versuch, Kontakte zu ändern, schlägt mit einem fehl kABOperationNotPermittedByUserErrorFehler. Der Benutzer wird nur dann dazu aufgefordert, wenn er zum ersten Mal Zugriff anfordert. Alle nachfolgenden Aufrufe von ABAddressBookCreateWithOptions verwenden die vorhandenen Berechtigungen. Der Abschlusshandler wird in einer beliebigen Warteschlange aufgerufen. Wenn das ABAddressBookRef-Objekt in der gesamten App verwendet wird, muss die gesamte Nutzung an dieselbe Warteschlange weitergeleitet werden, um ABAddressBookRef threadsicher zu verwenden.
  • Zugriffsberechtigungsstatus prüfen:
    • Mithilfe der Autorisierungsstatus-API kann eine App prüfen, ob sie auf Kontakte, Kalender, Erinnerungen oder die Fotobibliothek zugreifen kann. Diese API ist unabhängig von der API für den Anforderungszugriff und fordert den Benutzer nicht auf, den Zugriff zu gewähren oder zu verweigern. Mit dieser API kann eine App die Anzeige ihrer UI-Elemente anpassen, die auf die Datenklasse zugreifen würden. Wenn beispielsweise der Zugriff auf Kontakte autorisiert oder nicht festgelegt ist, kann eine UI-Schaltfläche zum Auswählen eines Kontakts angezeigt werden.
    • Rufen Sie für das Adressbuch die Funktion ABAddressBookGetAuthorizationStatus auf. Rufen Sie für Event Kit die Klassenmethode „authorizationStatusForEntityType:“ aufEKEventStore. Rufen Sie für die Assets-Bibliothek die Klassenmethode „authorizationStatus“ auf ALAssetsLibrary. Die zurückgegebenen Statuswerte haben folgende Bedeutung:
      • Autorisierungsstatus nicht bestimmt - Der Benutzer hat noch keine Entscheidung getroffen, ob diese App auf die Datenklasse zugreifen kann.
      • Autorisierungsstatus eingeschränkt – Diese App ist nicht berechtigt, auf die Datenklasse zuzugreifen. Der Benutzer kann den Status dieser App nicht ändern, möglicherweise aufgrund aktiver Einschränkungen wie der Kindersicherung.
      • Autorisierungsstatus verweigert – Der Benutzer hat den Zugriff auf die Datenklasse für diese App ausdrücklich verweigert.
      • Autorisierungsstatus Autorisiert – Diese App ist berechtigt, auf die Datenklasse zuzugreifen.

apple TV

  • In einigen Fällen zeigt der Bildschirm möglicherweise die falsche Auflösung an. Starten Sie Ihr Apple TV neu, um die richtige Auflösung wiederherzustellen.
  • BEHOBEN: Netflix-Videos werden möglicherweise nicht dort fortgesetzt, wo Sie aufgehört haben.
  • BEHOBEN: Die Verlaufsliste in der YouTube-App wird gelöscht, wenn Sie die App verlassen und erneut aufrufen.
  • Apple TV reagiert möglicherweise langsam, während im Hintergrund ein Download ausgeführt wird.
  • Apple TV wird möglicherweise neu gestartet, während die Remote-App verwendet wird.
  • Apple TV startet möglicherweise neu, wenn die Systemsprache geändert wird.
  • Der Fotostream wird beim zweiten Anmelden nicht geladen. Starten Sie Apple TV neu, um das Problem zu beheben.
  • Bei Foto-Diashows wird keine Musik abgespielt.
  • Neue Verhaltensweisen:
    • Wählen Sie unter „Einstellungen“ > „AirPlay“ Remote-Lautsprecher aus.
    • Legen Sie unter „Einstellungen“ > „AirPlay“ einen Bildschirmcode für AirPlay fest.
    • Speichern Sie mehrere iTunes Store-Konten unter „Einstellungen“ > „iTunes Store“.
    • Halten Sie die Auswahltaste gedrückt, um die Symbole im Hauptmenü neu anzuordnen.
    • Blenden Sie die Hauptmenüsymbole unter „Einstellungen“ > „Allgemein“ > „Kindersicherung“ aus.

Hallo

  • Das NSNetService Die APIs der Klasse und CFNetService enthalten standardmäßig keine P2P-Schnittstellen. Um Dienste über P2P-Schnittstellen zu durchsuchen, zu registrieren oder aufzulösen, muss eine App die unten aufgeführten Bonjour DNSService*()-APIs verwenden.
  • Wenn Sie den Parameter „interfaceIndex“ in den folgenden APIs auf „kDNSServiceInterfaceIndexAny“ setzen, werden P2P-Schnittstellen standardmäßig nicht berücksichtigt. Um P2P-Schnittstellen einzuschließen, müssen Sie jetzt das Flag kDNSServiceFlagsIncludeP2P setzen, wenn Sie kDNSServiceInterfaceIndexAny verwenden, oder den interfaceIndex auf kDNSServiceInterfaceIndexP2P setzen. Die betroffenen APIs verfügen über:
    • DNSServiceBrowse
    • DNSServiceRegister
    • DNSServiceResolve
    • DNSServiceRegisterRecord
    • DNSServiceQueryRecord

Wörterbuch

  • Es gibt ein bekanntes Problem mit Wörterbüchern, wenn versucht wird, ein Wort in einer anderen Sprache als Englisch oder Japanisch zu definieren. Wenn die Referenzbibliothek angezeigt wird, wird dem Benutzer die Möglichkeit geboten, ein Wörterbuch herunterzuladen – dieser Download beginnt jedoch möglicherweise nicht. Der Benutzer kann auf einem iPad außerhalb des Popovers tippen oder auf dem iPhone oder iPod touch auf die Schaltfläche „Fertig“ tippen, um die Download-Anfrage abzulehnen.

Event-Kit

  • Zugriff auf Kalender oder Erinnerungen anfordern:
    • Benutzer können den Zugriff auf Ereignis- und Erinnerungsdaten für jede einzelne App gewähren oder verweigern. Um Zugriff auf Ereignis- und/oder Erinnerungsdaten anzufordern, rufen Sie die Methode „requestAccessToEntityType:completion:“ von auf EKEventStore. Dadurch wird die App nicht blockiert, während der Benutzer aufgefordert wird, den Zugriff zu gewähren oder zu verweigern. Bis der Zugriff für einen Entitätstyp gewährt wurde, enthält der Ereignisspeicher keine Kalender für diesen Entitätstyp und jeder Versuch, Daten zu speichern, schlägt fehl.
    • Der Benutzer wird nur dann dazu aufgefordert, wenn zum ersten Mal Zugriff angefordert wird. Alle nachfolgenden Instanziierungen von EKEventStore verwenden die vorhandenen Berechtigungen. Der Abschlusshandler wird in einer beliebigen Warteschlange aufgerufen.

Game Center

  • Wenn Sie ein neues Game Center-Konto in der App auf dem iPad erstellen, wird das Popover zur Auswahl des Monats für Ihr Geburtsdatum angezeigt, ohne dass Inhalte ausgewählt werden können.
  • Die Authentifizierungsmethode von GKLocalPlayer wurde entfernt. Die Authentifizierung beginnt automatisch, wenn der Vervollständigungshandler festgelegt wird.

iCloud

  • Beim Erstellen eines iCloud-Kontos können Sie eine beliebige E-Mail-basierte Apple-ID oder Ihr vorhandenes iCloud-Konto verwenden. Wenn Sie über ein MobileMe-Konto verfügten, das Sie noch nicht auf iCloud verschoben haben, müssen Sie es zunächst über folgende Seite verschiebenhttp://me.com. Der Wechsel zu iCloud ist nur für eine begrenzte Zeit verfügbar. Die Anmeldung bei einem MobileMe-Konto wird in iOS 6 nicht unterstützt. Bereitstellungsprofile müssen für iCloud im iOS-Bereitstellungsportal aktiviert werden. Um ein Bereitstellungsprofil für iCloud zu aktivieren, navigieren Sie zum Abschnitt „App-ID“ des iOS-Bereitstellungsportals und konfigurieren Sie Ihre App-ID für iCloud. Nachdem Sie die App-ID für iCloud aktiviert haben, generieren Sie Ihre Bereitstellungsprofile neu, um sie für iCloud zu aktivieren.
    • icloud.com-E-Mail-Adressen sind jetzt für iCloud-Mail-Benutzer verfügbar. Benutzer, die sich für neue Apple-IDs anmelden oder Mail zum ersten Mal auf ihrem iCloud-Konto aktivieren, erhalten automatisch eine @icloud.com-E-Mail-Adresse anstelle einer me.com-E-Mail-Adresse. iCloud-Benutzer mit @me.com-Adressen, die mit iOS 6 Beta 3 verwendet wurden, erhalten eine @icloud.com-E-Mail-Adresse, die ihrer @me.com-Adresse entspricht.
    • E-Mails von icloud.com können nicht gesendet werden www.icloud.com. Benutzer sollten verwenden http://beta.icloud.com zu diesem Zeitpunkt, wenn sie E-Mails von ihrer icloud.com-Adresse über einen Webbrowser senden möchten.
  • Das setSortDescriptors: Methode von NSMetadataQuery wird nicht unterstützt.
  • In iOS 6 können Dateien, die durch Datenschutz geschützt sind, nicht mit iCloud Storage APIs verwendet werden.
  • Bei Dateinamen wird in OS X die Groß-/Kleinschreibung nicht beachtet, in iOS jedoch. Dies kann zu Problemen beim Teilen von Dateien zwischen den beiden Plattformen über iCloud führen. Unter iOS sollten Sie Maßnahmen ergreifen, um das Erstellen von Dateien zu vermeiden, deren Namen sich nur durch die Groß-/Kleinschreibung unterscheiden.
  • Das Verhalten koordinierter Lesevorgänge für iCloud-Dokumente hat sich geändert. Wenn Ihre App in früheren iOS-Versionen einen koordinierten Lesevorgang für eine Datei oder ein Paket durchführte und der iCloud-Daemon feststellte, dass eine neuere Version des Elements verfügbar war, wurde der koordinierte Lesevorgang blockiert, bis die neuere Version des Elements heruntergeladen wurde und auf die Festplatte geschrieben.
    Wenn Sie ab iOS 6 Beta 3 einen koordinierten Lesevorgang für eine Datei oder ein Paket starten, für das Sie bereits eine lokale Version haben, wird der koordinierte Lesevorgang so schnell wie möglich gewährt und die neue Version, sofern vorhanden, wird heruntergeladen der Hintergrund. Dieser Aufruf wird aus Download-Gründen nur blockiert, wenn keine Version der Datei lokal verfügbar ist.
    Wenn bei der Datei ein Konflikt vorliegt, wartet der iCloud-Daemon außerdem nicht, bis alle Konfliktverlierer der Datei verfügbar sind, um die Datei für Ihre App verfügbar zu machen. Dadurch werden die verschiedenen Versionen der Konfliktdatei so schnell wie möglich verfügbar gemacht. Ihre App kann die vorhandene Dateikoordination und die verwenden UIDocumentRückrufe, um benachrichtigt zu werden, wenn die Konfliktverlierer heruntergeladen wurden und verfügbar sind.

iMessage und FaceTime

  • BEHOBEN: Die Schaltflächen „Annehmen“ und „Ablehnen“ fehlen, wenn Anrufe im Querformat entgegengenommen werden.

iTunes

  • Für iOS SDK 10.6.3 ist iTunes 6.0 erforderlich.
  • BEHOBEN: Beim Wiederherstellen aus einem iTunes-Backup wird das Gerät nach dem Neustart zeitweise als neues Gerät angezeigt. Wenn das passiert, richten Sie das Gerät als „neues Gerät“ ein, wenn Sie zum zweiten Mal zur Wiederherstellung aufgefordert werden. Alle Daten sollten korrekt wiederhergestellt worden sein, aber die Synchronisierungseinstellungen einschließlich der App-Anordnung in iTunes gehen verloren.

Landkarten

  • In iOS 6 und höher basiert Map Kit auf einer neuen, von Apple gehosteten Infrastruktur. Frühere iOS-Versionen nutzen weiterhin den Dienst von Google. BEHOBEN: Wenn Maps nicht im Hintergrund ausgeführt wird, wird die Fehlermeldung „Maps kann keine Verbindung zum Internet herstellen“ angezeigt, wenn es über eine Drittanbieter-App gestartet wird.
    • Die API-Kompatibilität bleibt erhalten (siehe bekannte Probleme unten).
    • Karten werden jetzt im Simulator unterstützt.
    • Die Kartendaten werden sich weiterentwickeln – derzeit ist nur eine begrenzte Menge hochauflösender Satellitenbilder verfügbar.
  • BEHOBEN: Wenn Maps noch nicht gestartet wurde, wird der aktuelle Standort nicht angezeigt, wenn es über eine Drittanbieter-App gestartet wird.
  • Routing-Apps, die während der Entwicklung keine Abdeckungsdatei angeben, werden immer in den Routing-Suchergebnissen von Maps angezeigt.
  • Das Testen und Debuggen von Coverage-Dateien für Routing-Apps wird nur während der Entwicklung durch den Xcode-Workflow „Run“ unterstützt. (Sie können die Coverage-Datei für ein bestimmtes Ausführungsschema im Optionsbereich des Abschnitts „Ausführen“ des Schema-Editors angeben.) Apps, die archiviert und (außerhalb des App Store) auf Geräten verteilt werden, haben keinen Zugriff auf die Coverage-Dateien der App .
  • Maps zoomt nicht in den aktuellen Standort hinein, wenn es über eine Drittanbieter-App gestartet wird.

Zeitungsstand

  • Mit Newsstand funktionieren nur einfache http-Downloads.

Sparbuch

  • BEHOBEN: Bei allen Transportarten wird zwischen Start- und Zielort ein Flugzeugsymbol angezeigt.
  • Das Feld „Beschreibung“ ist jetzt ein Pflichtfeld für einen Pass. Alle ohne diese Funktion erstellten Pässe können nicht validiert werden und werden nicht erfasst.
  • BEHOBEN: Die Passbook-Datenbank wurde zurückgesetzt. Sie müssen Ihre Pässe erneut hinzufügen.
  • Passbook im Simulator erfordert kein https/ssl mehr, wenn bei der Aufnahme eines Passes eine webServiceURL verwendet wird.
  • Bordkarten können nicht auf dem Sperrbildschirm angezeigt werden.

Reminders

  • BEHOBEN: Beim Hinzufügen und Bearbeiten von Erinnerungen in der Erinnerungen-App auf iPhone-Geräten treten Probleme auf:
    • Beim Hinzufügen einer neuen Erinnerung fehlt die Schaltfläche „Fertig“.
    • Die App stürzt ab, wenn Sie auf die Schaltfläche „Bearbeiten“ tippen, um eine Erinnerung zu bearbeiten.

Sicherheit

  • In iOS 5 wird das Signieren eines Zertifikats mit einer MD5-Signatur nicht unterstützt. Bitte stellen Sie sicher, dass Zertifikate Signaturalgorithmen verwenden, die auf SHA1 oder SHA2 basieren.
  • In iOS 6 gibt es verbesserte Datenschutzkontrollen für Kalender, Erinnerungen, Kontakte und Fotos.
    • Benutzern werden Zugriffsdialoge angezeigt, wenn eine App versucht, auf einen dieser Datentypen zuzugreifen. Der Benutzer kann den Zugriff unter Einstellungen > Datenschutz ein- und ausschalten.
    • Entwickler können für jede Klasse isolierter Daten eine „Zweck“-Zeichenfolge festlegen. iOS zeigt Benutzern diese Zeichenfolge an, um ihnen zu helfen, zu verstehen, warum ihre Daten angefordert werden. Diese Zeichenfolgen können mit dem Projekteditor von Xcode auf der Registerkarte „Info“ hinzugefügt werden. Die entsprechenden Schlüsselnamen beginnen mit der Zeichenfolge „Privacy -“.
    • Es gibt Änderungen an den Event-Kit- und Adressbuch-Frameworks, um Entwickler bei dieser Funktion zu unterstützen.

Simulator

  • Es dauert eine Weile, bis das Bestätigungswarnfeld zum Löschen der App im iOS-Simulator angezeigt wird.
  • BEHOBEN: Tippen Sie auf die Schaltfläche „Kaufen“ in der Ansicht einesSKStoreProductViewController -Objekt im iOS-Simulator führt zum Absturz der App.
  • Für Apps, die auf Fotos, Kontakte, Kalender und Erinnerungen zugreifen, werden im iOS-Simulator keine Datenschutzwarnungen angezeigt.
  • Das Herunterladen von per In-App-Kauf gehosteten Inhalten im iOS-Simulator wird nicht unterstützt.
  • Wenn Sie versuchen, im Simulator einen MP3-Sound abzuspielen, hören Sie stattdessen ein Knallgeräusch.
  • BEHOBEN: Die Verwendung des iOS 5.1 SDK mit dem iPad (Retina)-Profil führt zu einem Absturz von SpringBoard. Das iOS 5.1 SDK funktioniert mit allen anderen Profilen und das iPad (Retina) SDK funktioniert mit dem iOS 6.0 SDK.
  • BEHOBEN: Anzeigen vom Typ ADAdTypeMediumRectangle werden im iPad-Simulator nicht angezeigt.

Geteilter Fotostream

  • Der Benutzer muss zu Einstellungen > iCloud gehen, um sicherzustellen, dass er Benachrichtigungen über freigegebene Fotostreams erhält.
  • Um einen Fotostream mit iOS 6 Beta zu teilen, müssen Sie jemanden über seine iCloud-E-Mail-Adresse einladen, sonst erhält er die Einladung nicht.
  • Ein Upgrade von iOS 6 Beta 1 auf Beta 2 führt dazu, dass Ihr Gerät alle Ihre freigegebenen Fotostreams erneut herunterlädt.
  • Die Funktion „Gemeinsamer Fotostream“ ist beim Update von iOS 6 Beta 1 auf eine spätere Version auf AUS gesetzt. Die Standardeinstellung sollte EIN sein.
  • Das Deaktivieren von „Geteilte Fotostreams“ kann dazu führen, dass die Kamera nicht mehr reagiert. Durch erzwungenes Beenden der Kamera wird dieses Problem behoben.

Social Media

  • Weibo wird in der App „Einstellungen“ nur angezeigt, wenn eine chinesische Tastatur aktiviert ist.
  • Das requestAccessToAccountsWithType:withCompletionHandler: Die Methode von ACAccountStore ist jetzt veraltet. Um auf Benutzerkonten zuzugreifen, verwenden Sie bitte dierequestAccessToAccountsWithType:options:completion: Methode. Übergeben Sie im Optionsparameter dieser neuen Methode Null, um auf Twitter- und Weibo-Konten zuzugreifen. Um auf Facebook-Konten zuzugreifen, übergeben Sie ein Wörterbuch mit den folgenden Schlüsseln (die in ACAccountStore.h dokumentiert sind): Sie sollten dieses Wörterbuch nicht mehr zur Info.plist-Datei Ihrer App hinzufügen, wie es in Beta 1 erforderlich war.
    • ACFacebookAppIdKey
    • ACFacebookPermissionsKey
    • ACFacebookPermissionGroupKey

Sprungbrett

  • BEHOBEN: Nach dem Wiederherstellen eines Geräts in iTunes oder dem Ausführen von „Alle Inhalte und Einstellungen löschen“ wird das aktuelle Hintergrundbild möglicherweise erst angezeigt, wenn das Gerät einmal neu gestartet wird.

Status Bar

  • Es ist jetzt möglich, Parameter für die Tönung der Statusleiste in der Info.plist-Datei Ihrer App festzulegen. Sie können dies tun, um sicherzustellen, dass die Farbe der Statusleiste beim Start mit der Farbe der Navigationsleiste Ihrer App übereinstimmt. Um den Farbton der Statusleiste festzulegen, fügen Sie den Schlüssel UIStatusBarTintParameters zu Ihrer Info.plist-Datei hinzu. Der Wert dieses Schlüssels ist ein Wörterbuch mit den entsprechenden Werten, die die Navigationsleiste beschreiben, die Ihre App beim Start hat. Im Wörterbuch sollte sich der Schlüssel UINavigationBar befinden, dessen Wert ebenfalls ein Wörterbuch ist. Dieses Wörterbuch enthält den Stil der anfänglichen Navigationsleiste (mit der Taste „Stil“) und ob sie durchscheinend ist (mit der Taste „Durchscheinend“). Wenn Ihre Navigationsleiste sie verwendet, können Sie auch die Tönungsfarbe (mit der Taste TintColor) oder den Namen des benutzerdefinierten Hintergrundbilds (mit der Taste BackgroundImage) angeben.

Uikit

    • In iOS 5.1 ist die UISplitViewController Die Klasse übernimmt den gleitenden Präsentationsstil, wenn sie die linke Ansicht präsentiert (bisher nur in Mail zu sehen). Dieser Stil wird verwendet, wenn die Präsentation entweder durch das vorhandene Leistenschaltflächenelement, das von den Delegate-Methoden bereitgestellt wird, oder durch eine Wischgeste in der rechten Ansicht initiiert wird. Um dieses Verhalten zu erreichen, ist keine zusätzliche API-Einführung erforderlich, und alle vorhandenen APIs, einschließlich der vom Delegaten bereitgestellten UIPopoverController-Instanz, funktionieren weiterhin wie zuvor. Wenn die Geste in Ihrer App nicht unterstützt werden würde, legen Sie fest präsentiertWithGesture Wenn Sie die Eigenschaft Ihres Split-View-Controllers auf „NO“ setzen, wird die Geste deaktiviert. Von der Deaktivierung der Geste wird jedoch abgeraten, da ihre Verwendung ein einheitliches Benutzererlebnis über alle Apps hinweg gewährleistet.
    • BEHOBEN: In iOS 6 wurden Änderungen eingeführt, sodass Sie keinen Delegaten mehr festlegen und keine Methode für Single-Finger- und Single-Tap-Gestenerkennungen implementieren müssen, um sicherzustellen, dass sie gut mit dem funktionieren UIControl Objekte.
    • In iOS 6 und höher ist die UIWebView Die Klasse zeichnet ihren Inhalt asynchron.
    • BEHOBEN: Entwickler probieren Auto-Layout mit aus UIScrollViewObjekte können auf Geräten mit Retina-Displays ein Flackern der Bildlaufanzeigen bemerken.
    • Die Autorotation ändert sich in iOS 6. In iOS 6 ist dieShouldAutorotateToInterfaceOrientation: Die Methode von UIViewController ist veraltet. Stattdessen sollten Sie das verwendenunterstützte Schnittstellenorientierungen und ShouldAutorotate-Methoden. BEHOBEN: In bestimmten Situationen wird das Auto-Layout-System für eine Ansicht möglicherweise nicht automatisch aktiviert. Um dieses Problem zu umgehen, überschreiben Sie die erfordertConstraintBasedLayout Klassenmethode in Ihrer Ansicht und geben Sie YES von Ihrer Implementierung zurück.
      • Mehr Verantwortung verlagert sich auf die App und den App-Delegierten. Jetzt können iOS-Container (wie zUINavigationController) konsultieren ihre Kinder nicht, um zu entscheiden, ob sie autorotieren sollen. Standardmäßig sind die unterstützten Schnittstellenausrichtungen einer App und eines Ansichtscontrollers auf eingestellt UIInterfaceOrientationMaskAll für die iPad-Sprache undUIInterfaceOrientationMaskAllButUpsideDownfür die iPhone-Sprache.
      • Die unterstützten Schnittstellenausrichtungen eines View Controllers können sich im Laufe der Zeit ändern. Sogar die unterstützten Schnittstellenausrichtungen einer App können sich im Laufe der Zeit ändern. Das System fragt den obersten Vollbild-Ansichtscontroller (typischerweise den Root-Ansichtscontroller) nach seinen unterstützten Schnittstellenausrichtungen, wann immer sich das Gerät dreht oder wann immer einem Ansichtscontroller der modale Vollbild-Präsentationsstil präsentiert wird. Darüber hinaus werden die unterstützten Ausrichtungen nur abgerufen, wenn dieser Ansichtscontroller von seiner Methode ShouldAutorotate JA zurückgibt. Das System schneidet die unterstützten Ausrichtungen des Ansichtscontrollers mit den unterstützten Ausrichtungen der App (wie durch die Info.plist-Datei oder die des App-Delegierten bestimmt).application:supportedInterfaceOrientationsForWindow:Methode), um zu bestimmen, ob gedreht werden soll.
      • Das System bestimmt, ob eine Ausrichtung unterstützt wird, indem es den von der App zurückgegebenen Wert schneidetunterstützteInterfaceOrientationsForWindow:Methode mit dem von der zurückgegebenen Wertunterstützte Schnittstellenorientierungen Methode des obersten Vollbild-Controllers.
      • Das setStatusBarOrientation:animiert:Die Methode ist nicht völlig veraltet. Allerdings funktioniert es jetzt nur, wenn dieunterstützte Schnittstellenorientierungen Die Methode des obersten Controllers für die Vollbildansicht gibt 0 zurück. Dies legt die Verantwortung dafür, sicherzustellen, dass die Ausrichtung der Statusleiste konsistent ist, in die Hände des Anrufers.
      • Aus Kompatibilitätsgründen sehen Sie sich Controller an, die noch implementierenShouldAutorotateToInterfaceOrientation: -Methode erhalten das neue Autorotationsverhalten nicht. (Mit anderen Worten: Sie greifen nicht auf die Verwendung der App, des App-Delegaten oder der Info.plist-Datei zurück, um die unterstützten Ausrichtungen zu bestimmen.) Stattdessen wird die Methode ShouldAutorotateToInterfaceOrientation: verwendet, um die Informationen zu synthetisieren, die von zurückgegeben würdenunterstützte Schnittstellenorientierungen Methode.
    • Das willRotateToInterfaceOrientation:duration:,willAnimateRotationToInterfaceOrientation:duration: unddidRotateFromInterfaceOrientation: Methoden werden nicht mehr auf einem Ansichtscontroller aufgerufen, der eine Vollbilddarstellung über sich selbst erstellt – beispielsweise durch einen AufrufpresentViewController:animation:completion:.In iOS 6 ist die viewWillUnload und viewDidUnload Methoden von UIViewController sind jetzt veraltet. Wenn Sie diese Methoden zum Freigeben von Daten verwendet haben, verwenden Sie die didReceiveMemoryWarningMethode statt. Sie können diese Methode auch verwenden, um Verweise auf die Ansicht des View Controllers freizugeben, wenn diese nicht verwendet wird. Bevor Sie dies tun, müssen Sie testen, ob sich die Ansicht nicht in einem Fenster befindet.
      • Sie sollten sicherstellen, dass Ihre Apps diese Methoden nicht verwenden, um das Layout von Unteransichten zu verwalten. Stattdessen sollten sie die View-Controller verwenden viewWillLayoutUnteransichten-Methode und passen Sie das Layout mithilfe des Begrenzungsrechtecks ​​der Ansicht an.
    • BEHOBEN: Aufruf einer der Methoden zum Zeichnen von attributierten Zeichenfolgen, ohne einen Wert für anzugeben NSFontAttributeName Das Attribut löst wahrscheinlich eine Ausnahme aus. Die Problemumgehung besteht darin, vor dem Zeichnen oder Anpassen eines Werts einen Wert für den NSFontAttributeName-Schlüssel festzulegenNSAttributedString Objekt.
    • Einstellwerte für die SchattenOffset or Schattenfarbe Eigenschaften eines UILabel-Objekts, dessen attributierterText Die Eigenschaft enthält eine gültige attributierte Zeichenfolge und wird nicht unterstützt. Benutzen Sie dieNSShadowAttributeName Attribut der attributierten Zeichenfolge, um stattdessen den Schatten festzulegen.
    • Aufgrund von Kompatibilitätsbedenken wurde dieNSBaselineOffsetAttributeName Das Attribut wird in iOS 6 nicht mehr unterstützt.
    • Das NSTextAlignmentNatural Der Wert wird nicht unterstützt und löst eine Ausnahme aus, wenn er mit dem verwendet wird Textausrichtung Eigenschaft von UILabel oder als Ausrichtungsparameter für bereitgestelltdrawInRect:withFont:lineBreakMode:alignment: Methode von NSString.
    • Die setContentStretch:-Methode von UIView ist in dieser Beta-Version veraltet. Um den gleichen Effekt zu erzielen, verwenden Sie die resizableImageWithCapInsets: Methode von UIImage und zeigen Sie das Bild mit a an UIImageView.
    • Das resizableImageWithCapInsets: Die Methode von UIImage ändert die Größe von Bildern effektiv durch Kacheln. Zur Leistungsoptimierung wird die Streckung anstelle der Kachelung verwendet, wenn der Benutzer den Unterschied nicht erkennen kann, beispielsweise wenn eine einzelne Spalte oder Zeile gestreckt wird. Unter bestimmten Umständen möchte man jedoch möglicherweise einen bestimmten Bereich eines Bildes tatsächlich strecken. In iOS 6 ermöglicht die resizableImageWithCapInsets:resizingMode:-Methode dem Aufrufer, einen Kachel- oder Streckungs-Größenänderungsmodus anzugeben.
    • Das UICollectionViewLayout Klasse hat sich geändert: BEHOBEN: In iOS 6 wurde ein Fehler behoben, bei dem UIWebView.isLoading auf NO gesetzt wurde, bevor der Hauptrahmen vollständig geladen wurde. Jetzt wird UIWebView.isLoading auf NO gesetzt, wenn der Hauptrahmen vollständig geladen ist.
      • Die Klasse unterstützt jetzt die Anpassung der während der Rotation erstellten Animationen. Die Namen der Methoden zum Anpassen von Einfüge- und Löschanimationen wurden ebenfalls geändert, sodass dieselben Hooks sowohl für Drehungen als auch für Einfügungen und Löschungen verwendet werden können.
      • Die Klasse hat einige Methodennamen geändert. Insbesondere werden Dekorationsansichten nicht mehr durch „Wiederverwendungskennung“, sondern durch „Elementart“ bezeichnet. Apps, die dekorative Ansichten verwenden, müssen ihren Code ändern und neu erstellen, um dies zu berücksichtigen.
    • Der untere Rand eines UILabel Die Ansicht unterscheidet sich jetzt von ihrer Grundlinie. Zuvor interpretierte das automatische Layout den unteren Rand eines UILabels als mit seiner Grundlinie identisch. Obwohl es in vielen Fällen praktisch war, verursachte es Probleme, wenn man die Oberkante eines Etiketts an der Unterkante eines anderen anbringen wollte. In einem solchen Szenario würde das untere Etikett das obere überlappen, und Unterlängen des oberen Etiketts könnten mit Oberlängen des unteren Etiketts zusammenstoßen. Jetzt interpretiert das automatische Layout UILayoutAttributeBottom als den unteren Rand des Textfelds (vorausgesetzt, die Beschriftung ist nicht größer als die eigentliche Inhaltsgröße) und UILayoutAttributeBaseline als Grundlinie des Texts. Wenn Sie bereits Code zum Anordnen von Beschriftungen entsprechend dem unteren oder mittleren Punkt erstellt haben, verschiebt sich Ihr Text ein wenig und Sie müssen Ihre Einschränkungen anpassen.
    • Apps mit Tabellenansichten in ihren NIB- oder Storyboard-Dateien, die mit früheren Versionen von iOS 6 Beta erstellt wurden, erfordern einen sauberen Build mit Beta 3 und neuer.
    • Hier finden Sie einige Hinweise zur Unterstützung des automatischen Layouts fürUIScrollView:
      • Im Allgemeinen betrachtet das automatische Layout den oberen, linken, unteren und rechten Rand einer Ansicht als sichtbare Ränder. Das heißt, wenn Sie eine Ansicht an den linken Rand ihrer Übersichtsansicht anheften, fixieren Sie sie tatsächlich an den minimalen x-Wert der Grenzen der Übersichtsansicht. Durch Ändern des Grenzursprungs der Übersicht wird die Position der Ansicht nicht geändert.
      • Die UIScrollView-Klasse scrollt durch ihren Inhalt, indem sie den Ursprung ihrer Grenzen ändert. Damit dies mit dem automatischen Layout funktioniert, bedeuten die oberen, linken, unteren und rechten Ränder innerhalb einer Bildlaufansicht jetzt die Ränder ihrer Inhaltsansicht.
      • Die Einschränkungen für die Unteransichten der Scroll-Ansicht müssen zu einer auszufüllenden Größe führen, die dann als Inhaltsgröße der Scroll-Ansicht interpretiert wird. (Dies sollte nicht mit dem verwechselt werdenintrinsicContentSize Methode, die für das automatische Layout verwendet wird.) Um die Größe des Rahmens der Scroll-Ansicht mit dem automatischen Layout anzupassen, müssen Einschränkungen entweder explizit hinsichtlich der Breite und Höhe der Scroll-Ansicht sein oder die Ränder der Scroll-Ansicht müssen an Ansichten außerhalb ihres Unterbaums gebunden sein.
      • Beachten Sie, dass Sie dafür sorgen können, dass eine Unteransicht der Scroll-Ansicht über dem anderen Scroll-Inhalt schwebt (nicht scrollt), indem Sie Einschränkungen zwischen der Ansicht und einer Ansicht außerhalb des Unterbaums der Scroll-Ansicht erstellen, z. B. der Superview der Scroll-Ansicht.
      • Hier sind einige Beispiele für die Konfiguration der Scroll-Ansicht:
        • Gemischter Ansatz:
          1. Positionieren und skalieren Sie Ihre Scroll-Ansicht mit Einschränkungen außerhalb der Scroll-Ansicht – d. h. derübersetztAutoresizingMaskIntoConstraintsDie Eigenschaft ist auf NEIN gesetzt.
          2. Erstellen Sie eine Ebene UIViewWählen Sie für Ihre Scroll-Ansicht eine Inhaltsansicht aus, die der Größe entspricht, die Ihr Inhalt haben soll. Machen Sie es zu einer Unteransicht der Bildlaufansicht, aber lassen Sie es weiterhin die automatische Größenänderungsmaske in Einschränkungen übersetzen:
  • UIView *contentView = [[UIView alloc]
  •     initWithFrame:CGRectMake(0,0,contentWidth,contentHeight)];
  • [scrollView addSubview:contentView];
  • // Die TranslatesAutoresizingMaskIntoConstraints von contentView NICHT ändern,
  • // was standardmäßig YES ist;
      1. Stellen Sie die Inhaltsgröße der Scroll-Ansicht so ein, dass sie mit der Größe der Inhaltsansicht übereinstimmt:
  • [scrollView setContentSize:CGMakeSize(contentWidth,contentHeight)];
      1. Erstellen Sie die Ansichten, die Sie in die Inhaltsansicht einfügen möchten, und konfigurieren Sie ihre Einschränkungen, um sie in der Inhaltsansicht zu positionieren. Alternativ können Sie einen Ansichtsunterbaum für die Scroll-Ansicht erstellen, Ihre Einschränkungen einrichten und aufrufensystemLayoutSizeFittingSize:Methode (mit derUILayoutFittingCompressedSizeOption), um die Größe zu finden, die Sie für die Größe Ihrer Inhaltsansicht verwenden möchtenInhaltsgrößeEigenschaft der Scroll-Ansicht.
    • Reiner Auto-Layout-Ansatz:
      1. In diesem FallübersetztAutoresizingMaskIntoConstraintsmuss für alle beteiligten Ansichten auf NO gesetzt sein.
      2. Positionieren und skalieren Sie Ihre Scroll-Ansicht mit Einschränkungen außerhalb der Scroll-Ansicht.
      3. Verwenden Sie Einschränkungen, um die Unteransichten innerhalb der Scroll-Ansicht anzuordnen. Stellen Sie dabei sicher, dass die Einschränkungen an alle vier Kanten der Scroll-Ansicht gebunden sind und verlassen Sie sich nicht auf die Scroll-Ansicht, um ihre Größe zu ermitteln. Ein einfaches Beispiel wäre eine große Bildansicht, die hat eine intrinsische Inhaltsgröße, die von der Größe des Bildes abgeleitet wird. ImviewDidLoadIn die Methode Ihres View-Controllers würden Sie Code wie den folgenden einfügen:
      1. Dadurch erhalten Sie eine Bildlaufansicht, deren Größe sich an die Größe der Ansicht des Ansichtscontrollers ändert (z. B. bei der Drehung des Geräts), und die Bildansicht wäre eine Bildlauf-Unteransicht. Sie müssen die Inhaltsgröße der Scroll-Ansicht nicht festlegen.

Safari & WebKit

  • WebKit unter iOS unterstützt jetzt die Methoden requestAnimationFrame und cancelAnimationFrame in JavaScript, wie hier beschriebenhttp://www.w3.org/TR/animation-timing/.Das Standard-App-Cache-Kontingent wurde von 5 MB auf 25 MB erhöht.
    • Beachten Sie, dass diese Methoden das Webkit-Präfix haben, da sich die Spezifikation noch im Status „Arbeitsentwurf“ befindet, also window.webkitRequestAnimationFrame und window.webkitCancelAnimationFrame sind.
  • Der JPEG-Unterabtastschwellenwert wurde auf allen unterstützten Hardwaregeräten außer iPhone 2GS und iPod touch (5. Generation) von 3 MP (Megapixel) auf 4 MP erhöht.
  • Unterstützung wurde hinzugefügt für Tags in Webformularen. Benutzer können vorhandene Fotos und Videos aus ihrer Fotobibliothek hochladen oder mit der Kamera ein Foto oder Video aufnehmen. Bisher war diese Formularsteuerung immer deaktiviert.
  • Mit Safari 6.0 unter OS X können Entwickler jetzt den Web Inspector (Webentwicklungstool) mit angeschlossenen iOS-Geräten und iOS-Simulator verwenden. Entwickler können den Web Inspector zum Debuggen von Safari und dem verwenden UIWebView Klasse in ihren eigenen Apps, die mit Xcode erstellt und ausgeführt werden. Dies ersetzt das Debug Console-Banner in Safari.
  • In iOS 6 und höher werden Webdaten (SQL Web Storage und LocalStorage) von aUIWebView Das Objekt kann in einem Verzeichnis gespeichert werden, das gesichert wird. Um die Sicherung dieser Daten zu ermöglichen, legen Sie den WebKitStoreWebDataForBackup-Schlüssel in den Benutzerstandards Ihrer App auf YES fest. Dies sollte nur erfolgen, wenn Ihre App auf Webinhaltsdaten angewiesen ist, die nicht erneut geladen werden können. Wenn Ihr UIWebView-Objekt Links zu beliebigen Webinhalten öffnet, sollte dieser Schlüssel auf NO gesetzt werden. Durch das Umschalten des Werts dieses Schlüssels werden vorhandene Webansichtsdaten nicht beibehalten.
  • In iOS 6 und höher registriert sich Safari nicht mehr für das allgemeine Feed-RSS/ATOM-Schema. Apps, die diese Arten von Feeds anzeigen können, werden aufgefordert, sich für dieses URL-Schema zu registrieren.
  • WebKit erstellt nicht mehr immer hardwarebeschleunigte Ebenen für Elemente mit der Option -webkit-transform: Preserve-3D. Autoren sollten aufhören, diese Option als Möglichkeit zur Hardwarebeschleunigung zu nutzen.
  • Die experimentelle CSS3-Flexbox-Unterstützung wird deaktiviert. Bitte wechseln Sie von der Verwendung von -webkit-flexbox und -webkit-inline-flexbox zu -webkit-box und -webkit-inline-box.
  • Ab iOS 6 funktionieren eingebettete YouTube-URLs im Format http://www.youtube.com/watch?v=oHg5SJYRHA0 nicht mehr. Diese URLs dienen zum Ansehen des Videos auf der YouTube-Website und nicht zum Einbetten in Webseiten. Stattdessen wird das zu verwendende Format in beschriebenhttps://developers.google.com/youtube/player_parameters.
  • In iOS 6 wurde die Eigenschaft „keyboardDisplayRequiresUserAction“ zur UIWebView-Klasse hinzugefügt. Die Eigenschaft ist standardmäßig auf YES eingestellt, was bedeutet, dass beim Aufruf von focus() für ein Formularelement die Tastatur nicht aufgerufen wird. Wenn Sie die Eigenschaft auf NO ändern, fokussiert ein JavaScript-Aufruf von focus() für ein Formularelement das Element und ruft automatisch die Tastatur auf.
  • Ab iOS 6 wird durch den Aufruf von focus() für ein Formularelement in einer Web-App das Element fokussiert.