Просмотр исходного кода

Fix image viewer not always showing share sheet

Tanner Bennett лет назад: 6
Родитель
Сommit
d537d3c79e

+ 8 - 0
Classes/Core/FLEXTableViewController.m

@@ -163,6 +163,14 @@ CGFloat const kFLEXDebounceForExpensiveIO = 0.5;
     }
     }
 }
 }
 
 
+- (void)viewDidDisappear:(BOOL)animated {
+    [super viewDidDisappear:animated];
+
+    if (self.searchController.active) {
+        self.searchController.active = NO;
+    }
+}
+
 #pragma mark - Private
 #pragma mark - Private
 
 
 - (void)debounce:(void(^)())block {
 - (void)debounce:(void(^)())block {

+ 15 - 8
Classes/ViewHierarchy/FLEXImagePreviewViewController.m

@@ -81,29 +81,36 @@
 
 
 - (void)actionButtonPressed:(id)sender
 - (void)actionButtonPressed:(id)sender
 {
 {
-    static BOOL CanSaveToCameraRoll = NO;
+    static BOOL canSaveToCameraRoll = NO, didShowWarning = NO;
     static dispatch_once_t onceToken;
     static dispatch_once_t onceToken;
     dispatch_once(&onceToken, ^{
     dispatch_once(&onceToken, ^{
         if ([UIDevice currentDevice].systemVersion.floatValue < 10) {
         if ([UIDevice currentDevice].systemVersion.floatValue < 10) {
-            CanSaveToCameraRoll = YES;
+            canSaveToCameraRoll = YES;
             return;
             return;
         }
         }
         
         
         NSBundle *mainBundle = [NSBundle mainBundle];
         NSBundle *mainBundle = [NSBundle mainBundle];
         if ([mainBundle.infoDictionary.allKeys containsObject:@"NSPhotoLibraryUsageDescription"]) {
         if ([mainBundle.infoDictionary.allKeys containsObject:@"NSPhotoLibraryUsageDescription"]) {
-            CanSaveToCameraRoll = YES;
-        } else {
-            NSLog(@"Add NSPhotoLibraryUsageDescription in app's Info.plist for saving captured image into camera roll.");
+            canSaveToCameraRoll = YES;
         }
         }
     });
     });
     
     
     UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[self.image] applicationActivities:@[]];
     UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[self.image] applicationActivities:@[]];
     
     
-    if (!CanSaveToCameraRoll) {
+    if (!canSaveToCameraRoll && !didShowWarning) {
         activityVC.excludedActivityTypes = @[UIActivityTypeSaveToCameraRoll];
         activityVC.excludedActivityTypes = @[UIActivityTypeSaveToCameraRoll];
+
+        didShowWarning = YES;
+        NSString *msg = @"Add 'NSPhotoLibraryUsageDescription' to this app's Info.plist to save images.";
+        [FLEXAlert makeAlert:^(FLEXAlert *make) {
+            make.title(@"Reminder").message(msg);
+            make.button(@"OK").handler(^(NSArray<NSString *> *strings) {
+                [self presentViewController:activityVC animated:YES completion:nil];
+            });
+        } showFrom:self];
+    } else {
+        [self presentViewController:activityVC animated:YES completion:nil];
     }
     }
-    
-    [self presentViewController:activityVC animated:YES completion:nil];
 }
 }
 
 
 @end
 @end