Browse Source

[iOS DAC] Fix touch events getting from SDL2 to source2.

Sam Lantinga 6 years ago
parent
commit
82758efc46
1 changed files with 21 additions and 0 deletions
  1. 21 0
      src/video/uikit/SDL_uikitview.m

+ 21 - 0
src/video/uikit/SDL_uikitview.m

@@ -82,6 +82,27 @@ extern int SDL_AppleTVRemoteOpenedAsJoystick;
     return self;
 }
 
+- (void)layoutSubviews
+{
+	// Fix for touch ios.
+#if TARGET_OS_IOS
+	// on ios, a metal view gets added to our parent, and covers this for touch events.
+	// So set ourselves to user interact, and siblings false. johna
+	NSArray<UIView*>* subviews = [self.superview subviews];
+	for (int i=0; i<[subviews count]; i++)
+	{
+		UIView *view = [subviews objectAtIndex:i];
+		if (view == self) {
+			[view setUserInteractionEnabled:YES];  // set our user interaction to true.
+		} else {
+			[view setUserInteractionEnabled:NO];  // siblings to false.
+		}
+	}
+#endif
+    [super layoutSubviews];
+}
+
+
 - (void)setSDLWindow:(SDL_Window *)window
 {
     SDL_WindowData *data = nil;