Поиск сообщества
Показаны результаты для тегов 'iOS9'.
Найдено: 1 результат
-
C недавних пор мой старый метод открытия файлов в другом приложении перестал работать на ipad mini и iphone6. Оказалось что Apple ещё с ios 7 представил свой способ передачи файлов Airdrop, он же предоставляет возможность открывать файл в различных приложениях аналогично кнопке Open in. Итак код: uses {$IFDEF IOS} iOSapi.UIKit, iOSapi.Foundation, iOSapi.CoreGraphics, FMX.Helpers.iOS, Macapi.Helpers, Macapi.ObjectiveC {$ENDIF}; procedure Share(const AControl: TControl; filepath: string); var objects: NSMutableArray; controller : UIActivityViewController; popoverController: UIPopoverController; url: NSURL; procedure ShowForPhone; var Window: UIWindow; begin Window := SharedApplication.keyWindow; if (Window <> nil) and (Window.rootViewController <> nil) then Window.rootViewController.presentModalViewController(controller, True); end; procedure ShowForPad; var Window: UIWindow; PopoverRect: CGRect; AbsolutePos: TPointF; begin Window := SharedApplication.keyWindow; if AControl <> nil then begin AbsolutePos := AControl.LocalToAbsolute(PointF(0, 0)); if AControl.Scene <> nil then AbsolutePos := AControl.Scene.LocalToScreen(AbsolutePos); PopoverRect := CGRectMake(AbsolutePos.X, AbsolutePos.Y, AControl.Width, AControl.Height); end else PopoverRect := CGRectMake(0, 0, 0, 0); popoverController := TUIPopoverController.Alloc; popoverController.initWithContentViewController(controller); popoverController.presentPopoverFromRect(PopoverRect, Window.rootViewController.View, UIPopoverArrowDirectionAny, True); end; procedure ShowActionsSheet; begin if IsPad then ShowForPad else ShowForPhone; end; begin url := TNSURL.Wrap(TNSURL.OCClass.fileURLWithPath(StrToNSStr(filepath))); objects := TNSMutableArray.Create; objects.addObject((url as ILocalObject).GetObjectID); try if objects.count > 0 then begin controller := TUIActivityViewController.alloc; controller.initWithActivityItems(objects , nil); ShowActionsSheet; end; finally objects.release; objects := nil; end; end; Возможно Вы найдёт для себя что-то лишнее или нагромождённое, но заметьте, этот код подходит и для телефона и для планшета и сделан для быстрого понимания происходящего. Он был "заимствован" и модифицирован из самой RAD Studio из модуля FMX.MediaLibrary.IOS 395 строка. Оригинал же позволял передавать лишь String и TBitmap. Если же Вам нужно передавать именно их, Вы можете открыть этот модуль "C:\Program Files\Embarcadero\Studio\17.0\source\fmx\FMX.MediaLibrary.iOS.pas" и найти в оригинале как это делается.