Lasse V. Karlsen
Lasse V. Karlsen

Reputation: 391336

Detect or react to Guided Access?

In an app we're creating, we need to add some extra screens to configure the app.

It would be nice if we could add extra buttons on the opening screen of the app, that is only visible if the iPad is not in guided access.

Is it possible to detect that the device is currently running with guided access, and react to it being enabled or disabled?

Upvotes: 18

Views: 5381

Answers (3)

MatthiasFranz
MatthiasFranz

Reputation: 111

Swift 4.2:

if !UIAccessibility.isGuidedAccessEnabled {
  // show something since I'm not in guided access
}

Upvotes: 2

djibouti33
djibouti33

Reputation: 12132

Guided Access in depth at WWDC 2013 (begins at 39:26)


Check if Guided Access is Enabled ( iOS 6+ ):

UIAccessibilityIsGuidedAccessEnabled()

Respond to Guided Access status changes ( iOS 6+ ):

UIAccessibilityGuidedAccessStatusDidChangeNotification

Add custom restrictions while in Guided Access mode ( iOS 7+ ):

UIGuidedAccessRestrictionDelegate

Getting the restriction state for specified restriction ( iOS 7+ ):

Swift:

func UIGuidedAccessRestrictionStateForIdentifier(_ restrictionIdentifier: String) -> UIGuidedAccessRestrictionState

Obj-C

UIGuidedAccessRestrictionState UIGuidedAccessRestrictionStateForIdentifier(NSString *restrictionIdentifier);

Upvotes: 5

TerryB
TerryB

Reputation: 535

You want something like this:

NSLog(@"Accessabilitiy enabled: %@", UIAccessibilityIsGuidedAccessEnabled() ? @"YES" : @"NO");

if (!UIAccessibilityIsGuidedAccessEnabled()) {
   // show something since I'm not in guided access
}

If you want to know when it changes...

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(guidedAccessChanged) name:UIAccessibilityGuidedAccessStatusDidChangeNotification object:nil];

then check to see if it is on or off as per the first test.

Upvotes: 33

Related Questions