Ver Fonte

Added a hint SDL_HINT_APPLE_TV_REMOTE_SWIPES_AS_ARROW_KEYS to prevent turning Apple TV remote swipes into arrow key events

Sam Lantinga há 7 anos atrás
pai
commit
9338a619f8
2 ficheiros alterados com 29 adições e 16 exclusões
  1. 10 0
      include/SDL_hints.h
  2. 19 16
      src/video/uikit/SDL_uikitview.m

+ 10 - 0
include/SDL_hints.h

@@ -355,6 +355,16 @@ extern "C" {
  */
 #define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION"
 
+/**
+ * \brief  A variable controlling whether the Apple TV remote swipes are
+ *         translated into arrow key events
+ *
+ *  This variable can be set to the following values:
+ *    "0"       - Swipes are not translated into arrow key events
+ *    "1"       - Swipes are translated into arrow key events (the default)
+ */
+#define SDL_HINT_APPLE_TV_REMOTE_SWIPES_AS_ARROW_KEYS "SDL_APPLE_TV_REMOTE_SWIPES_AS_ARROW_KEYS"
+
 /**
  *  \brief  A variable controlling whether the Android / iOS built-in
  *  accelerometer should be listed as a joystick device, rather than listing

+ 19 - 16
src/video/uikit/SDL_uikitview.m

@@ -24,6 +24,7 @@
 
 #include "SDL_uikitview.h"
 
+#include "SDL_hints.h"
 #include "../../events/SDL_mouse_c.h"
 #include "../../events/SDL_touch_c.h"
 #include "../../events/SDL_events_c.h"
@@ -42,23 +43,25 @@
 - (instancetype)initWithFrame:(CGRect)frame
 {
     if ((self = [super initWithFrame:frame])) {
-        /* Apple TV Remote touchpad swipe gestures. */
 #if TARGET_OS_TV
-        UISwipeGestureRecognizer *swipeUp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];
-        swipeUp.direction = UISwipeGestureRecognizerDirectionUp;
-        [self addGestureRecognizer:swipeUp];
-
-        UISwipeGestureRecognizer *swipeDown = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];
-        swipeDown.direction = UISwipeGestureRecognizerDirectionDown;
-        [self addGestureRecognizer:swipeDown];
-
-        UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];
-        swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
-        [self addGestureRecognizer:swipeLeft];
-
-        UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];
-        swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
-        [self addGestureRecognizer:swipeRight];
+        if (SDL_GetHintBoolean(SDL_HINT_APPLE_TV_REMOTE_SWIPES_AS_ARROW_KEYS, SDL_TRUE)) {
+            /* Apple TV Remote touchpad swipe gestures. */
+            UISwipeGestureRecognizer *swipeUp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];
+            swipeUp.direction = UISwipeGestureRecognizerDirectionUp;
+            [self addGestureRecognizer:swipeUp];
+
+            UISwipeGestureRecognizer *swipeDown = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];
+            swipeDown.direction = UISwipeGestureRecognizerDirectionDown;
+            [self addGestureRecognizer:swipeDown];
+
+            UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];
+            swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
+            [self addGestureRecognizer:swipeLeft];
+
+            UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];
+            swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
+            [self addGestureRecognizer:swipeRight];
+        }
 #endif
 
         self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;