From bf6cf210847f091f0d9aa639f997a5c139aaf083 Mon Sep 17 00:00:00 2001 From: True Zhuanjia Date: Thu, 11 Jul 2024 02:54:36 +0800 Subject: [PATCH] resolve absolute touch gesture --- .../StreamFrameViewController.m | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Limelight/ViewControllers/StreamFrameViewController.m b/Limelight/ViewControllers/StreamFrameViewController.m index d6f3f456..e89d561c 100644 --- a/Limelight/ViewControllers/StreamFrameViewController.m +++ b/Limelight/ViewControllers/StreamFrameViewController.m @@ -97,12 +97,34 @@ [self.view addGestureRecognizer:_exitSwipeRecognizer]; } +- (void)configZoomGesture{ + [_scrollView removeFromSuperview]; + if (_settings.touchMode.intValue == ABSOLUTE_TOUCH) { + _scrollView = [[UIScrollView alloc] initWithFrame:self.view.frame]; +#if !TARGET_OS_TV + [_scrollView.panGestureRecognizer setMinimumNumberOfTouches:2]; + [_scrollView.panGestureRecognizer setMaximumNumberOfTouches:2]; // reduce competing with keyboardToggleRecognizer in StreamView. +#endif + [_scrollView setShowsHorizontalScrollIndicator:NO]; + [_scrollView setShowsVerticalScrollIndicator:NO]; + [_scrollView setDelegate:self]; + [_scrollView setMaximumZoomScale:10.0f]; + + // Add StreamView inside a UIScrollView for absolute mode + [_scrollView addSubview:_streamView]; + [self.view addSubview:_scrollView]; + return; + } + [self.view addSubview:_streamView]; +} + // key implementation of reconfiguring streamview after realtime setting menu is closed. - (void)reConfigStreamViewRealtime{ //[self.view removeGestureRecognizer:] _settings = [[[DataManager alloc] init] getSettings]; //StreamFrameViewController retrieve the settings here. [self configOscLayoutTool]; [self configExitGesture]; + [self configZoomGesture]; [self->_streamView disableOnScreenControls]; //don't know why but this must be called outside the streamview class, just put it here. execute in streamview class cause hang [self.mainFrameViewcontroller reloadStreamConfig]; // reload streamconfig [_streamView setupStreamView:_controllerSupport interactionDelegate:self config:self.streamConfig]; //reinitiate setupStreamView process.