SameBoy/iOS/GBCheckableAlertController.m

44 lines
1.4 KiB
Objective-C

#import "GBCheckableAlertController.h"
/* Private API */
@interface UIAlertAction()
- (bool)_isChecked;
- (void)_setChecked:(bool)checked;
@end
@implementation GBCheckableAlertController
{
bool _addedChecks;
}
- (void)viewWillAppear:(BOOL)animated
{
if (@available(iOS 13.0, *)) {
if (!_addedChecks && _selectedAction) {
_addedChecks = true;
NSMutableSet *set = [NSMutableSet setWithObject:self.view];
while (set.count) {
UIView *view = [set anyObject];
[set removeObject:view];
if ([view.debugDescription containsString:_selectedAction.debugDescription]) {
UIImageView *checkImage = [[UIImageView alloc] initWithImage:[UIImage systemImageNamed:@"checkmark"]];
CGRect bounds = view.bounds;
CGRect frame = checkImage.frame;
frame.origin.x = bounds.size.width - frame.size.width - 12;
frame.origin.y = round((bounds.size.height - frame.size.height) / 2);
checkImage.frame = frame;
[view addSubview:checkImage];
break;
}
[set addObjectsFromArray:view.subviews];
}
}
}
else {
[_selectedAction _setChecked:true];
}
[super viewWillAppear:animated];
}
@end