(Or: What The Hell Is MPGobblerGestureRecognizer?)
Now that Apple has released iOS 6.1, I wanted to see whether the new OS version contained any exciting new APIs beside the rather meager additions in the public API diffs.
With the help of Nicolas Seriot’s excellent iOS Runtime Headers repository, I compiled a list of all API changes between iOS 6.1 and 6.0. In the following, I discuss the most interesting additions. It is not an exhaustive list of everything that changed.
MediaPlayer.framework
MPGobblerGestureRecognizer
The MediaPlayer framework1 contains a number of new undocumented classes in iOS 6.1.
The most interesting one to me is MPGobblerGestureRecognizer
, a UIGestureRecognizer subclass. To be honest, I don’t have the slightest idea what a “gobbler gesture” could be. If you know of a new gesture in iOS that is related to the media player or if you have any idea what kind of gesture this class is meant to detect, I’d love to hear from you.
Update February 5 and 7: Turns out that people have been speculating about the purpose of UIGobblerGestureRecognizer
, an undocumented class which was introduced in iOS 5.0 but I was unaware of, for quite some time.
BJ Homer believes
. In an interesting Twitter conversation, Filippo Bigarella and Conrad Kramer discovered that UIGobblerGestureRecognizer
is used to avoid recognition while animations are in progress. Otherwise, it’s inactiveUIGobblerGestureRecognizer
can “gobble” touches in order to prevent other gesture recognizers from receiving them in certain situations. What situations those are, I don’t know.
_MPGlowLabel and MPScrollingTitlesView
The new _MPGlowLabel
is a UILabel subclass with two additional properties, glowColor
and glowRadius
. Apple probably uses such a label in one or more places in its media player UI.
MPScrollingTitlesView
seems to model a view that is used to display album and song titles in a scrolling marquee.
Other Media Player Changes
Other new classes in this framework include MPCloudDownloadButton
, MPFloatingAirPlayDebugViewController
and MPLoggingUtility
.
iAd.framework
I was especially curious if Apple had added new functionality for remote view controllers in iOS 6.1. While the underlying APIs seem to be unchanged, I found at least a small change in wording in the iAd framework. A property of the ADLocalViewController
class, used to display full-screen iAd ads, was renamed from modalViewController
to modalRemoteViewController
.
UIKit.framework
The _UIWebViewController
class is a big candidate to be made a public API in iOS 7 in my opinion. If I understand it correctly, it lets an app present a web view through remote view controllers. In addition to improved security, this new model for displaying web views could also mean that third-party apps could profit from WebKit’s just-in-time Javascript compilation, which is currently disabled for UIWebView
.
The class got two new methods in iOS 6.1, -_webContentSizeWithReplyHandler:
and -loadHTMLString:baseURL:
.
CoreData.framework
A large number of Core Data classes saw changes in iOS 6.1, albeit most of them quite small (such as the addition of a single method). As far as I can tell from names of the new methods, most changes are related to iCloud syncing. Whether this means that Core Data syncing over iCloud will work more reliably with iOS 6.1 is anybody’s guess.
Changes include:
NSPersistentStore
added the method-_storeInfoForEntityDescription:
.NSSQLConnection
andNSSQLiteConnection
added the method-dropUbiquityTables
.PFUbiquitySetupAssistant
added the method-removeUbiquityMetadataFromStore:
.- Several classes got a new property of the type
PFUbiquityKnowledgeVector *
. I have no idea what this class does. _PFUbiquityRecordsImporter
added the methods-cancelAllOperationsForStoreName:
and-checkStoresAndContainer
.
PassKit.framework
Lots of changes in PassKit, but the vast majority of them are rather less exciting class renamings from the old WL
prefix to the new PK
. Does anybody know what WL
stands for? Update: Eric Firestone bets WL stands for “Wallet”.
CoreTelephony.framework
The CTTelephonyNetworkInfo class has a new property radioAccessTechnology
and the framework contains a corresponding new class named
CTRadioAccessTechnology.
It’s hard to tell from the headers what data this new class encapsulates.
CoreMotion.framework
The CMMotionManager class got two new methods, -gyttNumTemperatures
and -rebuildGytt
. I have no idea what they might do.
AirPlayDiagnostics.framework
AirPlayDiagnostics is a new private framework in iOS. It contains these five classes:
- AirPlayDiagnosticsFullscreenController
- AirPlayDiagnosticsIssuesController
- AirPlayDiagnosticsPopoverController
- AirPlayDiagnosticsRoutePicker
- AirPlayDiagnosticsStateMachine
-
Note that all links in this article to specific classes or frameworks inside the iOS Runtime Headers repository point to a specific commit (the iOS 6.1 version of these files). If you are reading this at a later date, the links might not reflect the current state of these APIs. ↩︎