public static void AddOrientationChangeListener([NotNull] IOrientationChangeListener listener) { Should.NotBeNull(listener, "listener"); lock (OrientationChangeListeners) { if (!_hasOrientationChangeSubscriber) { UIApplication.Notifications.ObserveDidChangeStatusBarOrientation(DidChangeStatusBarOrientation); _hasOrientationChangeSubscriber = true; } OrientationChangeListeners.Add(ToolkitExtensions.GetWeakReference(listener)); } }
public static void RemoveOrientationChangeListener(IOrientationChangeListener listener) { Should.NotBeNull(listener, "listener"); lock (OrientationChangeListeners) { for (int i = 0; i < OrientationChangeListeners.Count; i++) { var target = OrientationChangeListeners[i].Target; if (target == null) { OrientationChangeListeners.RemoveAt(i); --i; continue; } if (ReferenceEquals(target, listener)) { OrientationChangeListeners.RemoveAt(i); return; } } } }