blob: 04a45ee34ce896b2e887b9ff58c3ecbea3e944c5 [file] [log] [blame] [edit]
// 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