diff --git a/StreetHawk/Classes/Core/Publish/SHBaseViewController.h b/StreetHawk/Classes/Core/Publish/SHBaseViewController.h index 4292f87..2d76fc0 100644 --- a/StreetHawk/Classes/Core/Publish/SHBaseViewController.h +++ b/StreetHawk/Classes/Core/Publish/SHBaseViewController.h @@ -42,6 +42,12 @@ */ @interface StreetHawkBaseViewController : UIViewController +/** + Some customer view controller may be inherited not in purpose (such as base vc do inherit). + Use this property to exclude them from being treated as StreetHawk behavior vc. + */ +@property (nonatomic) BOOL excludeBehavior; + @end /** @@ -49,6 +55,12 @@ */ @interface StreetHawkBaseTableViewController : UITableViewController +/** + Some customer view controller may be inherited not in purpose (such as base vc do inherit). + Use this property to exclude them from being treated as StreetHawk behavior vc. + */ +@property (nonatomic) BOOL excludeBehavior; + @end /** @@ -56,6 +68,12 @@ */ @interface StreetHawkBaseCollectionViewController : UICollectionViewController +/** + Some customer view controller may be inherited not in purpose (such as base vc do inherit). + Use this property to exclude them from being treated as StreetHawk behavior vc. + */ +@property (nonatomic) BOOL excludeBehavior; + @end /** diff --git a/StreetHawk/Classes/Core/Publish/SHBaseViewController.m b/StreetHawk/Classes/Core/Publish/SHBaseViewController.m index 143a025..f63f751 100644 --- a/StreetHawk/Classes/Core/Publish/SHBaseViewController.m +++ b/StreetHawk/Classes/Core/Publish/SHBaseViewController.m @@ -52,6 +52,33 @@ - (NSString *)refinePageName @implementation StreetHawkBaseViewController +- (id)init +{ + if (self = [super init]) + { + self.excludeBehavior = NO; + } + return self; +} + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) + { + self.excludeBehavior = NO; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)aDecoder +{ + if (self = [super initWithCoder:aDecoder]) + { + self.excludeBehavior = NO; + } + return self; +} + - (void)viewDidLoad { [super viewDidLoad]; @@ -59,7 +86,7 @@ - (void)viewDidLoad { [self performSelector:@selector(displayDeepLinkingToUI)]; } - if (!shIsSDKViewController(self)) //Not show tip and super tag for SDK vc + if (!self.excludeBehavior && !shIsSDKViewController(self)) //Not show tip and super tag for SDK vc { [[NSNotificationCenter defaultCenter] postNotificationName:@"SH_PointziBridge_ShowTip_Notification" object:nil userInfo:@{@"vc": self}]; [[NSNotificationCenter defaultCenter] postNotificationName:@"SH_PointziBridge_SuperTag_Notification" object:nil userInfo:@{@"vc": self}]; @@ -70,8 +97,11 @@ - (void)viewDidLoad - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [[NSUserDefaults standardUserDefaults] setObject:self.class.description forKey:@"ENTERBAK_PAGE_HISTORY"]; - [[NSUserDefaults standardUserDefaults] synchronize]; + if (!self.excludeBehavior && !shIsSDKViewController(self)) + { + [[NSUserDefaults standardUserDefaults] setObject:self.class.description forKey:@"ENTERBAK_PAGE_HISTORY"]; + [[NSUserDefaults standardUserDefaults] synchronize]; + } } //tricky: Here must use `viewDidAppear` and `viewWillDisappear`. @@ -81,7 +111,7 @@ - (void)viewWillAppear:(BOOL)animated - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; - if (!shIsSDKViewController(self)) //several internal used vc not need log, such as SHFeedbackViewController, SHSlideWebViewController (it calls appear even not show). + if (!self.excludeBehavior && !shIsSDKViewController(self)) //several internal used vc not need log, such as SHFeedbackViewController, SHSlideWebViewController (it calls appear even not show). { [StreetHawk shNotifyPageEnter:[self.class.description refinePageName]]; [[NSNotificationCenter defaultCenter] postNotificationName:@"SH_PointziBridge_EnterVC_Notification" object:nil userInfo:@{@"vc": self}]; @@ -92,7 +122,7 @@ - (void)viewDidAppear:(BOOL)animated - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; - if (!shIsSDKViewController(self)) //several internal used vc not need log, such as SHFeedbackViewController, SHSlideWebViewController (it calls appear even not show). + if (!self.excludeBehavior && !shIsSDKViewController(self)) //several internal used vc not need log, such as SHFeedbackViewController, SHSlideWebViewController (it calls appear even not show). { [StreetHawk shNotifyPageExit:[self.class.description refinePageName]]; @@ -105,6 +135,42 @@ - (void)viewWillDisappear:(BOOL)animated @implementation StreetHawkBaseTableViewController +- (id)init +{ + if (self = [super init]) + { + self.excludeBehavior = NO; + } + return self; +} + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) + { + self.excludeBehavior = NO; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)aDecoder +{ + if (self = [super initWithCoder:aDecoder]) + { + self.excludeBehavior = NO; + } + return self; +} + +- (id)initWithStyle:(UITableViewStyle)style +{ + if (self = [super initWithStyle:style]) + { + self.excludeBehavior = NO; + } + return self; +} + - (void)viewDidLoad { [super viewDidLoad]; @@ -112,7 +178,7 @@ - (void)viewDidLoad { [self performSelector:@selector(displayDeepLinkingToUI)]; } - if (!shIsSDKViewController(self)) //Not show tip and super tag for SDK vc + if (!self.excludeBehavior && !shIsSDKViewController(self)) //Not show tip and super tag for SDK vc { [[NSNotificationCenter defaultCenter] postNotificationName:@"SH_PointziBridge_ShowTip_Notification" object:nil userInfo:@{@"vc": self}]; [[NSNotificationCenter defaultCenter] postNotificationName:@"SH_PointziBridge_SuperTag_Notification" object:nil userInfo:@{@"vc": self}]; @@ -122,14 +188,17 @@ - (void)viewDidLoad - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [[NSUserDefaults standardUserDefaults] setObject:self.class.description forKey:@"ENTERBAK_PAGE_HISTORY"]; - [[NSUserDefaults standardUserDefaults] synchronize]; + if (!self.excludeBehavior && !shIsSDKViewController(self)) + { + [[NSUserDefaults standardUserDefaults] setObject:self.class.description forKey:@"ENTERBAK_PAGE_HISTORY"]; + [[NSUserDefaults standardUserDefaults] synchronize]; + } } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; - if (!shIsSDKViewController(self)) //several internal used vc not need log, such as SHFeedbackViewController, SHSlideWebViewController (it calls appear even not show). + if (!self.excludeBehavior && !shIsSDKViewController(self)) //several internal used vc not need log, such as SHFeedbackViewController, SHSlideWebViewController (it calls appear even not show). { [StreetHawk shNotifyPageEnter:[self.class.description refinePageName]]; [[NSNotificationCenter defaultCenter] postNotificationName:@"SH_PointziBridge_EnterVC_Notification" object:nil userInfo:@{@"vc": self}]; @@ -140,7 +209,7 @@ - (void)viewDidAppear:(BOOL)animated - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; - if (!shIsSDKViewController(self)) //several internal used vc not need log, such as SHFeedbackViewController, SHSlideWebViewController (it calls appear even not show). + if (!self.excludeBehavior && !shIsSDKViewController(self)) //several internal used vc not need log, such as SHFeedbackViewController, SHSlideWebViewController (it calls appear even not show). { [StreetHawk shNotifyPageExit:[self.class.description refinePageName]]; [[NSNotificationCenter defaultCenter] postNotificationName:@"SH_PointziBridge_ForceDismissTip_Notification" object:nil userInfo:@{@"vc": self}]; @@ -152,6 +221,42 @@ - (void)viewWillDisappear:(BOOL)animated @implementation StreetHawkBaseCollectionViewController +- (id)init +{ + if (self = [super init]) + { + self.excludeBehavior = NO; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)aDecoder +{ + if (self = [super initWithCoder:aDecoder]) + { + self.excludeBehavior = NO; + } + return self; +} + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) + { + self.excludeBehavior = NO; + } + return self; +} + +- (id)initWithCollectionViewLayout:(UICollectionViewLayout *)layout +{ + if (self = [super initWithCollectionViewLayout:layout]) + { + self.excludeBehavior = NO; + } + return self; +} + - (void)viewDidLoad { [super viewDidLoad]; @@ -159,7 +264,7 @@ - (void)viewDidLoad { [self performSelector:@selector(displayDeepLinkingToUI)]; } - if (!shIsSDKViewController(self)) //Not show tip and super tag for SDK vc + if (!self.excludeBehavior && !shIsSDKViewController(self)) //Not show tip and super tag for SDK vc { [[NSNotificationCenter defaultCenter] postNotificationName:@"SH_PointziBridge_ShowTip_Notification" object:nil userInfo:@{@"vc": self}]; [[NSNotificationCenter defaultCenter] postNotificationName:@"SH_PointziBridge_SuperTag_Notification" object:nil userInfo:@{@"vc": self}]; @@ -169,14 +274,17 @@ - (void)viewDidLoad - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [[NSUserDefaults standardUserDefaults] setObject:self.class.description forKey:@"ENTERBAK_PAGE_HISTORY"]; - [[NSUserDefaults standardUserDefaults] synchronize]; + if (!self.excludeBehavior && !shIsSDKViewController(self)) + { + [[NSUserDefaults standardUserDefaults] setObject:self.class.description forKey:@"ENTERBAK_PAGE_HISTORY"]; + [[NSUserDefaults standardUserDefaults] synchronize]; + } } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; - if (!shIsSDKViewController(self)) //several internal used vc not need log, such as SHFeedbackViewController, SHSlideWebViewController (it calls appear even not show). + if (!self.excludeBehavior && !shIsSDKViewController(self)) //several internal used vc not need log, such as SHFeedbackViewController, SHSlideWebViewController (it calls appear even not show). { [StreetHawk shNotifyPageEnter:[self.class.description refinePageName]]; [[NSNotificationCenter defaultCenter] postNotificationName:@"SH_PointziBridge_EnterVC_Notification" object:nil userInfo:@{@"vc": self}]; @@ -187,7 +295,7 @@ - (void)viewDidAppear:(BOOL)animated - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; - if (!shIsSDKViewController(self)) //several internal used vc not need log, such as SHFeedbackViewController, SHSlideWebViewController (it calls appear even not show). + if (!self.excludeBehavior && !shIsSDKViewController(self)) //several internal used vc not need log, such as SHFeedbackViewController, SHSlideWebViewController (it calls appear even not show). { [StreetHawk shNotifyPageExit:[self.class.description refinePageName]]; [[NSNotificationCenter defaultCenter] postNotificationName:@"SH_PointziBridge_ForceDismissTip_Notification" object:nil userInfo:@{@"vc": self}];