VIDEO_TOO_LONG_TITLE warning shown by UIImagePickerController

I use UIImagePickerController to shoot movies. Movie length is limited by setting the videoMaximumDuration property of the controller.
When you try to take a longer movie, a warning is displayed, as expected.

However, an unexpected additional warning called VIDEO_TOO_LONG_TITLE is displayed directly above the controls (see image below).
Apparently, this is an iOS error (only partially localized, clip not selected).

Can this unnecessary and inappropriate warning be hidden?

enter image description here

+9
source share
2 answers
 imagePicker.allowsEditing = false 
+2
source

I know the question is pretty old, but there is a solution to the problem that is still not resolved by Apple.

 @implementation NSBundle (UIImagePickerControllerLocalizationFix) + (void) load { SEL const selector = @selector (localizedStringForKey:value:table:); Method const localizedStringMethod = class_getInstanceMethod (self, selector); NSString *(*originalImp) (NSBundle *, SEL, NSString *, NSString *, NSString *) = (typeof (originalImp)) method_getImplementation (localizedStringMethod); IMP const updatedImp = (typeof (updatedImp)) imp_implementationWithBlock (^(NSBundle *bundle, NSString *key, NSString *value, NSString *tableName) { NSString *const result = originalImp (bundle, selector, key, value, tableName); if ([key isEqualToString:@"VIDEO_TOO_LONG_TITLE"] && [result isEqualToString:key]) { static NSBundle *properLocalizationBundle = nil; static NSString *properLocalizationTable = nil; static dispatch_once_t onceToken; dispatch_once (&onceToken, ^{ NSString *const originalBundleName = bundle.infoDictionary [(NSString *) kCFBundleNameKey]; NSArray <NSBundle *> *const frameworkBundles = [NSBundle allFrameworks]; for (NSBundle *frameworkBundle in frameworkBundles) { NSString *const possibleTableName = [originalBundleName isEqualToString:tableName] ? frameworkBundle.infoDictionary [(NSString *) kCFBundleNameKey] : tableName; NSString *const localizedKey = originalImp (frameworkBundle, selector, key, value, possibleTableName); if (![localizedKey isEqualToString:key]) { properLocalizationBundle = frameworkBundle; properLocalizationTable = possibleTableName; break; } } if (!(properLocalizationBundle && properLocalizationTable)) { // Giving up properLocalizationBundle = bundle; properLocalizationTable = tableName; } }); return originalImp (properLocalizationBundle, selector, key, value, properLocalizationTable); } else { return result; } }); method_setImplementation (localizedStringMethod, updatedImp); } @end 
0
source

Source: https://habr.com/ru/post/1011837/


All Articles