diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/CameraView/iOS/FormsCameraView.ios.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/CameraView/iOS/FormsCameraView.ios.cs index bcbbc70fa..af37a9940 100644 --- a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/CameraView/iOS/FormsCameraView.ios.cs +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/CameraView/iOS/FormsCameraView.ios.cs @@ -264,10 +264,13 @@ public void StartRecord() captureSession.AddOutput(videoOutput); var audioDevice = AVCaptureDevice.GetDefaultDevice(AVMediaTypes.Audio); - var audioInput = AVCaptureDeviceInput.FromDevice(audioDevice); + if (audioDevice != null) + { + var audioInput = AVCaptureDeviceInput.FromDevice(audioDevice); - if (captureSession.CanAddInput(audioInput)) - captureSession.AddInput(audioInput); + if (audioInput != null && captureSession.CanAddInput(audioInput)) + captureSession.AddInput(audioInput); + } captureSession.CommitConfiguration(); diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/MediaElement/iOS/MediaElementRenderer.ios.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/MediaElement/iOS/MediaElementRenderer.ios.cs index 59e233bbb..c26bbed44 100644 --- a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/MediaElement/iOS/MediaElementRenderer.ios.cs +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/MediaElement/iOS/MediaElementRenderer.ios.cs @@ -85,7 +85,7 @@ protected virtual void UpdateSource() } else { - if (Element.Source is XCT.FileMediaSource fileSource) + if (Element.Source is XCT.FileMediaSource fileSource && fileSource.File != null) asset = AVAsset.FromUrl(NSUrl.FromFilename(fileSource.File)); } diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/iOS/PopupRenderer.ios.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/iOS/PopupRenderer.ios.cs index efe4bd639..ed3deefdc 100644 --- a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/iOS/PopupRenderer.ios.cs +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/iOS/PopupRenderer.ios.cs @@ -1,6 +1,7 @@ using System; using System.ComponentModel; using CoreGraphics; +using Intents; using UIKit; using Xamarin.CommunityToolkit.Helpers; using Xamarin.CommunityToolkit.PlatformConfiguration.iOSSpecific; @@ -180,6 +181,9 @@ void SetSize() void SetLayout() { + if (PresentationController == null || PopoverPresentationController == null) + return; + ((UIPopoverPresentationController)PresentationController).SourceRect = new CGRect(0, 0, PreferredContentSize.Width, PreferredContentSize.Height); _ = Element ?? throw new InvalidOperationException($"{nameof(Element)} cannot be null"); @@ -199,6 +203,7 @@ void SetLayout() _ => 0f }; + PopoverPresentationController.SourceRect = new CGRect(originX, originY, 0, 0); PopoverPresentationController.PermittedArrowDirections = 0; } @@ -241,6 +246,10 @@ void SetView() void SetPresentationController() { + + if (PresentationController == null) + return; + var popOverDelegate = new PopoverDelegate(); popOverDelegate.PopoverDismissed += HandlePopoverDelegateDismissed; @@ -284,8 +293,7 @@ protected override void Dispose(bool disposing) Element.PropertyChanged -= OnElementPropertyChanged; Element = null; - var presentationController = (UIPopoverPresentationController)PresentationController; - if (presentationController != null) + if (PresentationController is UIPopoverPresentationController presentationController) presentationController.Delegate = null; } }