//
//  MFScrollingViewController.h
//  MobileFirstFramework
//
//  Created by Pfeil, Scott Robert on 11/21/17.
//  Copyright © 2017 Verizon Wireless. All rights reserved.
//

#import <MVMCoreUI/MFViewController.h>

@interface MFScrollingViewController : MFViewController <UIScrollViewDelegate>

@property (nullable, weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (nullable, weak, nonatomic) IBOutlet UIView *contentView;

// Recognizes single tap/touches to screen for dismissing keyboard
@property (nonnull, strong, nonatomic) UITapGestureRecognizer *dismissKeyboardTapGesture;

// For setting the width of the content to the size of the screen.
@property (nullable, weak, nonatomic) IBOutlet NSLayoutConstraint *contentWidthConstraint;

// Boolean for if the keyboard is showing or now.
@property (assign, nonatomic, readonly) BOOL keyboardIsShowing;

// Returns the rectangle to scroll to when the keyboard pops up.
- (CGRect)rectToScrollToWhenKeyboardPopsUp;

// Registers for keyboard notifications
- (void)registerForKeyboardNotifications;

// Unregisters for keyboard notifications
- (void)unregisterForKeyboardNotifications;

// Called when the UIKeyboardDidShowNotification is sent. (Subclasses should call super)
- (void)keyboardWillShow:(nonnull NSNotification *)notification;

// Called when the UIKeyboardWillHideNotification is sent. (Subclasses should call super)
- (void)keyboardWillBeHidden:(nonnull NSNotification *)notification;


// Returns if the scroll shoud flash on completion of animation in view. This is always true in the base class. Subclass to override.
- (BOOL)isFlashScrollIndicatorAccesible;

- (void)pageAnimationEnded;

// Implement this to disable hand scroll Animation for View Controller. By Default it will be enabled
- (BOOL)shouldEnableHandScrollAnimation;

// to stop hand scoll animation so subclases can stop in certain user actions
- (void)stopHandScrollAnimation:(BOOL)animated;

@end
