fix touchMode - osw - tapGestureForSoftkeyboard settings menu logic

This commit is contained in:
TrueZhuanjia committed 2025-07-08 11:35:28 +08:00
1 parent eacdda384a
commit f7a032a918
1 file changed
+15 -12
@@ -23,7 +23,7 @@
@implementation SettingsViewController { @implementation SettingsViewController {
NSInteger _bitrate; NSInteger _bitrate;
NSInteger _lastSelectedResolutionIndex; NSInteger _lastSelectedResolutionIndex;
bool justEnteredSettingsViewDoNotOpenOscLayoutTool; bool justEnteredSettingsView;
uint16_t oswLayoutFingers; uint16_t oswLayoutFingers;
CustomEdgeSlideGestureRecognizer *slideToCloseSettingsViewRecognizer; CustomEdgeSlideGestureRecognizer *slideToCloseSettingsViewRecognizer;
NSMutableDictionary *_settingStackDict; NSMutableDictionary *_settingStackDict;
@@ -1132,7 +1132,7 @@ BOOL isCustomResolution(CGSize res) {
slideToCloseSettingsViewRecognizer.delaysTouchesEnded = NO; slideToCloseSettingsViewRecognizer.delaysTouchesEnded = NO;
[self.view addGestureRecognizer:slideToCloseSettingsViewRecognizer]; [self.view addGestureRecognizer:slideToCloseSettingsViewRecognizer];
justEnteredSettingsViewDoNotOpenOscLayoutTool = true; justEnteredSettingsView = true;
// Always run settings in dark mode because we want the light fonts // Always run settings in dark mode because we want the light fonts
if (@available(iOS 13.0, tvOS 13.0, *)) { if (@available(iOS 13.0, tvOS 13.0, *)) {
@@ -1375,6 +1375,8 @@ BOOL isCustomResolution(CGSize res) {
[self.externalDisplayModeSelector setSelectedSegmentIndex:currentSettings.externalDisplayMode.integerValue]; [self.externalDisplayModeSelector setSelectedSegmentIndex:currentSettings.externalDisplayMode.integerValue];
[self.localMousePointerModeSelector setSelectedSegmentIndex:currentSettings.localMousePointerMode.integerValue]; [self.localMousePointerModeSelector setSelectedSegmentIndex:currentSettings.localMousePointerMode.integerValue];
justEnteredSettingsView = false;
} }
- (void)slideToSettingsScreenEdgeChanged{ - (void)slideToSettingsScreenEdgeChanged{
@@ -1415,7 +1417,7 @@ BOOL isCustomResolution(CGSize res) {
[self invokeOscLayout]; // Don't open osc layout tool immediately during streaming [self invokeOscLayout]; // Don't open osc layout tool immediately during streaming
} }
[self findDynamicLabelFromStack:self.onScreenWidgetStack].text = [LocalizationHelper localizedStringForKey:@"%d finger tap", self->oswLayoutFingers]; [self findDynamicLabelFromStack:self.onScreenWidgetStack].text = [self isCustomOswEnabled] ? [LocalizationHelper localizedStringForKey:@"%d finger tap", self->oswLayoutFingers] : @"";
//markmark //markmark
[self handleOswGestureChange]; [self handleOswGestureChange];
}]; }];
@@ -1440,11 +1442,12 @@ BOOL isCustomResolution(CGSize res) {
} }
- (void)handleOswGestureChange{ - (void)handleOswGestureChange{
if(oswLayoutFingers == self.softKeyboardGestureSelector.selectedSegmentIndex + 3 && oswLayoutFingers < 6){ if(justEnteredSettingsView) return;
if([self isCustomOswEnabled] && oswLayoutFingers == self.softKeyboardGestureSelector.selectedSegmentIndex + 3 && oswLayoutFingers < 6){
[_softKeyboardGestureSelector setSelectedSegmentIndex:_softKeyboardGestureSelector.selectedSegmentIndex-1]; [_softKeyboardGestureSelector setSelectedSegmentIndex:_softKeyboardGestureSelector.selectedSegmentIndex-1];
} }
for (NSInteger i = 0; i < _softKeyboardGestureSelector.numberOfSegments; i++) { for (NSInteger i = 0; i < _softKeyboardGestureSelector.numberOfSegments; i++) {
[_softKeyboardGestureSelector setEnabled:![self isCustomOswEnabled] ? true : i+3 != oswLayoutFingers forSegmentAtIndex:i]; // 或 NO 来禁用 [_softKeyboardGestureSelector setEnabled:![self isCustomOswEnabled] ? true : i+3 != oswLayoutFingers forSegmentAtIndex:i]; // 或 NO 来禁用
} }
} }
@@ -1462,19 +1465,18 @@ BOOL isCustomResolution(CGSize res) {
} }
bool customOscEnabled = [self isCustomOswEnabled]; bool customOscEnabled = [self isCustomOswEnabled];
NSLog(@"customOscEnabled %d", customOscEnabled);
UILabel* oswDynamicLabel = [self findDynamicLabelFromStack:self.onScreenWidgetStack]; UILabel* oswDynamicLabel = [self findDynamicLabelFromStack:self.onScreenWidgetStack];
NSString* labelText = [LocalizationHelper localizedStringForKey:@"%d finger tap", self->oswLayoutFingers]; NSString* labelText = customOscEnabled ? [LocalizationHelper localizedStringForKey:@"%d finger tap", self->oswLayoutFingers] : @"";
oswDynamicLabel.text = [NSString stringWithFormat:@" %@ ", labelText]; oswDynamicLabel.text = [NSString stringWithFormat:@" %@ ", labelText];
oswDynamicLabel.hidden = !customOscEnabled; oswDynamicLabel.hidden = !customOscEnabled;
NSLog(@"oswDynamicLabel.hidden %d", oswDynamicLabel.hidden);
[self handleOswGestureChange]; [self handleOswGestureChange];
if(customOscEnabled && !justEnteredSettingsViewDoNotOpenOscLayoutTool) { if(customOscEnabled && !justEnteredSettingsView) {
// [self.keyboardToggleFingerNumSlider setValue:3.0]; // [self.keyboardToggleFingerNumSlider setValue:3.0];
// [self keyboardToggleFingerNumSliderMoved]; // [self keyboardToggleFingerNumSliderMoved];
//markmark [self showCustomOswTip];
[self showCustomOswTip];
justEnteredSettingsViewDoNotOpenOscLayoutTool = false;
} }
justEnteredSettingsViewDoNotOpenOscLayoutTool = false;
} }
- (void)invokeOscLayout{ - (void)invokeOscLayout{
@@ -1569,7 +1571,7 @@ BOOL isCustomResolution(CGSize res) {
[self setHidden:!(sender.selectedSegmentIndex == RelativeTouch) forStack:self.mousePointerVelocityStack]; [self setHidden:!(sender.selectedSegmentIndex == RelativeTouch) forStack:self.mousePointerVelocityStack];
[self setHidden:![self isNotNativeTouchOnly] forStack:self.onScreenWidgetStack]; [self setHidden:![self isNotNativeTouchOnly] forStack:self.onScreenWidgetStack];
[self setHidden:![self isNotNativeTouchOnly] forStack:self.swapAbaxyStack]; [self setHidden:![self isNotNativeTouchOnly] forStack:self.swapAbaxyStack];
[self handleOswGestureChange];
[touchControlSection updateViewForFoldState]; [touchControlSection updateViewForFoldState];
} }
@@ -1590,6 +1592,7 @@ BOOL isCustomResolution(CGSize res) {
//self.onScreenWidgetStack.hidden = !sender.isOn; //self.onScreenWidgetStack.hidden = !sender.isOn;
[self setHidden:!sender.isOn forStack:_onScreenWidgetStack]; [self setHidden:!sender.isOn forStack:_onScreenWidgetStack];
[self setHidden:!sender.isOn forStack:_swapAbaxyStack]; [self setHidden:!sender.isOn forStack:_swapAbaxyStack];
[self handleOswGestureChange];
//self.swapAbaxyStack.hidden = !sender.isOn; //self.swapAbaxyStack.hidden = !sender.isOn;
[touchControlSection updateViewForFoldState]; [touchControlSection updateViewForFoldState];
} }