diff --git a/Mini vMac/ViewController.h b/Mini vMac/ViewController.h index ce89689..e94b244 100644 --- a/Mini vMac/ViewController.h +++ b/Mini vMac/ViewController.h @@ -10,12 +10,7 @@ #import "ScreenView.h" #import "KBKeyboardView.h" -#ifdef __IPHONE_13_4 -API_AVAILABLE(ios(13.4)) -@interface ViewController : UIViewController -#else @interface ViewController : UIViewController -#endif @property (weak, nonatomic) IBOutlet ScreenView *screenView; @property (nonatomic, getter=isKeyboardVisible) BOOL keyboardVisible; diff --git a/Mini vMac/ViewController.m b/Mini vMac/ViewController.m index 2e1af5b..7c8bc1c 100644 --- a/Mini vMac/ViewController.m +++ b/Mini vMac/ViewController.m @@ -13,21 +13,24 @@ #import "KBKeyboardView.h" #import "KBKeyboardLayout.h" -#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) - @interface ViewController () @end +#ifdef __IPHONE_13_4 +API_AVAILABLE(ios(13.4)) +@interface ViewController (PointerInteraction) + +@end +#endif + @implementation ViewController { KBKeyboardView *keyboardView; UISwipeGestureRecognizer *showKeyboardGesture, *hideKeyboardGesture, *insertDiskGesture, *showSettingsGesture; UIControl *pointingDeviceView; UISwipeGestureRecognizerDirection modalPanePresentationDirection; -#ifdef __IPHONE_13_4 - UIPointerInteraction* interaction; -#endif + id interaction; } - (Point)mouseLocForCGPoint:(CGPoint)point { @@ -39,22 +42,6 @@ return mouseLoc; } -#ifdef __IPHONE_13_4 -- (UIPointerRegion *)pointerInteraction:(UIPointerInteraction *)interaction regionForRequest:(UIPointerRegionRequest *)request defaultRegion:(UIPointerRegion *)defaultRegion API_AVAILABLE(ios(13.4)){ - if (request != nil) { - Point mouseLoc = [self mouseLocForCGPoint:request.location]; - // NSLog(@"Interaction: x2: %hi, y2: %hi", (short)mouseLoc.h, (short)mouseLoc.v); - [[AppDelegate sharedEmulator] setMouseX:mouseLoc.h Y:mouseLoc.v]; - } - return defaultRegion; -} - -- (UIPointerStyle *)pointerInteraction:(UIPointerInteraction *)interaction styleForRegion:(UIPointerRegion *)region { - return [UIPointerStyle hiddenPointerStyle]; - -} -#endif - - (void)viewDidLoad { [super viewDidLoad]; [self installKeyboardGestures]; @@ -158,10 +145,12 @@ pointingDeviceView = nil; } - if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"13.4")) { +#ifdef __IPHONE_13_4 + if (@available(iOS 13.4, *)) { interaction = [[UIPointerInteraction alloc] initWithDelegate: self]; [self.view addInteraction:interaction]; } +#endif BOOL useTrackPad = [[NSUserDefaults standardUserDefaults] boolForKey:@"trackpad"]; Class pointingDeviceClass = useTrackPad ? [TrackPad class] : [TouchScreen class]; @@ -398,3 +387,21 @@ } @end + +#ifdef __IPHONE_13_4 +API_AVAILABLE(ios(13.4)) +@implementation ViewController (PointerInteraction) +- (UIPointerRegion *)pointerInteraction:(UIPointerInteraction *)interaction regionForRequest:(UIPointerRegionRequest *)request defaultRegion:(UIPointerRegion *)defaultRegion API_AVAILABLE(ios(13.4)){ + if (request != nil) { + Point mouseLoc = [self mouseLocForCGPoint:request.location]; + [[AppDelegate sharedEmulator] setMouseX:mouseLoc.h Y:mouseLoc.v]; + } + return defaultRegion; +} + +- (UIPointerStyle *)pointerInteraction:(UIPointerInteraction *)interaction styleForRegion:(UIPointerRegion *)region { + return [UIPointerStyle hiddenPointerStyle]; +} + +@end +#endif