| // Copyright 2016-present the Material Components for iOS authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| #import <UIKit/UIKit.h> |
| |
| /** |
| Class responsible for reporting changes to overlays on a given screen. |
| */ |
| @interface MDCOverlayObserver : NSObject |
| |
| /** |
| Returns the overlay observer for the given screen. |
| |
| If @c screen is nil, the main screen is used. |
| */ |
| + (instancetype)observerForScreen:(UIScreen *)screen API_UNAVAILABLE(visionos); |
| |
| /** |
| Adds a target/action pair to listen for changes to overlays. |
| |
| If an overlay is already showing when this method is called, then a call to the target/action will |
| be made immediately with an unanimated transition. |
| |
| @param target The object which will be the target of @c action |
| @param action The method to invoke on @c target. This method should take a single argument, an |
| object that conforms to @c MDCOverlayTransitioning. |
| */ |
| - (void)addTarget:(id)target action:(SEL)action; |
| |
| /** |
| Prevents the given target/action pair from being notified of overlay changes. |
| |
| @param target The target to stop notifying of changes. If multiple @c actions have been |
| registered, then @c target may still receive notifications via other selectors. |
| @param action The method which will no longer be called when overlay changes occur. |
| */ |
| - (void)removeTarget:(id)target action:(SEL)action; |
| |
| /** |
| Prevents the given target from being notified of any overlay changes. |
| |
| @param target The target to stop notifying of changes. This will remove any and all target-action |
| pairs registered via @c addTarget:action:. |
| */ |
| - (void)removeTarget:(id)target; |
| |
| @end |