and Low Level handling with controllerUserInteractionEnabled. Use GCController class to detect controllers and setup value change listeners on them. Or optionally check GCController objects during the run loop to see what buttons are depressed. This method can be used to assign player numbers, change behavior of Apple TV Remote, etc.