- Resolving app crash which happens occasionally after slide from screen edge

- Slide from upper 40% of left & right screen edge to open in-stream menus will  no longer sends touch event to remote PC
This commit is contained in:
True Zhuanjia committed 2024-08-22 19:49:09 +08:00
1 parent db75cac9bc
commit 69f5fbef31
10 files changed
+61 -60

No files matched your search

@@ -1,17 +1,17 @@
//
// CustomEdgeSwipeGestureRecognizer.h
// CustomEdgeSlideGestureRecognizer.h
// Moonlight-ZWM
//
// Created by ZWM on 2024/4/30.
// Copyright © 2024 Moonlight Game Streaming Project. All rights reserved.
//
#ifndef CustomEdgeSwipeGestureRecognizer_h
#define CustomEdgeSwipeGestureRecognizer_h
// CustomEdgeSwipeGestureRecognizer.h
#ifndef CustomEdgeSlideGestureRecognizer_h
#define CustomEdgeSlideGestureRecognizer_h
// CustomEdgeSlideGestureRecognizer.h
#import <UIKit/UIKit.h>
@interface CustomEdgeSwipeGestureRecognizer : UIGestureRecognizer
@interface CustomEdgeSlideGestureRecognizer : UIGestureRecognizer
@property (nonatomic, assign) UIRectEdge edges; // Specify the edge(s) you want to recognize the swipe gesture on
@property (nonatomic, assign) CGFloat normalizedThresholdDistance; // Distance from the edge to start recognizing the gesture
@@ -19,4 +19,4 @@
@property (nonatomic, assign) CGFloat EDGE_TOLERANCE;
@end
#endif /* CustomEdgeSwipeGestureRecognizer_h */
#endif /* CustomEdgeSlideGestureRecognizer_h */
@@ -1,5 +1,5 @@
//
// CustomEdgeSwipeGestureRecognizer.m
// CustomEdgeSlideGestureRecognizer.m
// Moonlight-ZWM
//
// Created by ZWM on 2024/4/30.
@@ -8,10 +8,10 @@
// #import <Foundation/Foundation.h>
#import "CustomEdgeSwipeGestureRecognizer.h"
#import "CustomEdgeSlideGestureRecognizer.h"
#import <UIKit/UIGestureRecognizerSubclass.h>
@implementation CustomEdgeSwipeGestureRecognizer
@implementation CustomEdgeSlideGestureRecognizer
UITouch* capturedUITouch;
CGFloat startPointX;
static CGFloat screenWidthInPoints;
@@ -27,7 +27,7 @@
#import "IdManager.h"
#import "ConnectionHelper.h"
#import "LocalizationHelper.h"
#import "CustomEdgeSwipeGestureRecognizer.h"
#import "CustomEdgeSlideGestureRecognizer.h"
#import "DataManager.h"
#import "Moonlight-Swift.h" // not used yet.
@@ -10,7 +10,7 @@
#import "AppDelegate.h"
#import "CustomOSCViewControl/LayoutOnScreenControlsViewController.h"
#import "MainFrameViewController.h"
#import "CustomEdgeSwipeGestureRecognizer.h"
#import "CustomEdgeSlideGestureRecognizer.h"
@interface SettingsViewController : UIViewController
@property (strong, nonatomic) IBOutlet UILabel *bitrateLabel;
@@ -12,7 +12,7 @@
#import "StreamManager.h"
#import "ControllerSupport.h"
#import "DataManager.h"
#import "CustomEdgeSwipeGestureRecognizer.h"
#import "CustomEdgeSlideGestureRecognizer.h"
#import "CustomTapGestureRecognizer.h"
#import "LocalizationHelper.h"
#import "Moonlight-Swift.h"
@@ -55,8 +55,8 @@
BOOL _userIsInteracting;
CGSize _keyboardSize;
#if !TARGET_OS_TV
CustomEdgeSwipeGestureRecognizer *_slideToSettingsRecognizer;
CustomEdgeSwipeGestureRecognizer *_slideToCmdToolRecognizer;
CustomEdgeSlideGestureRecognizer *_slideToSettingsRecognizer;
CustomEdgeSlideGestureRecognizer *_slideToCmdToolRecognizer;
CustomTapGestureRecognizer *_oscLayoutTapRecoginizer;
LayoutOnScreenControlsViewController *_layoutOnScreenControlsVC;
#endif
@@ -95,7 +95,7 @@
}
- (void)configSwipeGestures{
_slideToSettingsRecognizer = [[CustomEdgeSwipeGestureRecognizer alloc] initWithTarget:self action:@selector(edgeSwiped)];
_slideToSettingsRecognizer = [[CustomEdgeSlideGestureRecognizer alloc] initWithTarget:self action:@selector(edgeSwiped)];
_slideToSettingsRecognizer.edges = _settings.slideToSettingsScreenEdge.intValue;
_slideToSettingsRecognizer.normalizedThresholdDistance = _settings.slideToSettingsDistance.floatValue;
_slideToSettingsRecognizer.delaysTouchesBegan = NO;
@@ -103,7 +103,7 @@
[self.view addGestureRecognizer:_slideToSettingsRecognizer];
_slideToCmdToolRecognizer = [[CustomEdgeSwipeGestureRecognizer alloc] initWithTarget:self action:@selector(presentCommandManagerViewController)];
_slideToCmdToolRecognizer = [[CustomEdgeSlideGestureRecognizer alloc] initWithTarget:self action:@selector(presentCommandManagerViewController)];
if(_settings.slideToSettingsScreenEdge.intValue == UIRectEdgeLeft) _slideToCmdToolRecognizer.edges = UIRectEdgeRight;
else _slideToCmdToolRecognizer.edges = UIRectEdgeLeft; // _commandManager triggered by sliding from another side.
_slideToCmdToolRecognizer.normalizedThresholdDistance = _settings.slideToSettingsDistance.floatValue;