From bd91448d8fa28607a0f7ff63ce96332036ae7253 Mon Sep 17 00:00:00 2001 From: Thomas Hempel Date: Fri, 8 Jun 2012 09:19:32 +0200 Subject: [PATCH 1/5] [FIX] Made the arrow a little wider --- TSPopover/TSPopoverPopoverView.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TSPopover/TSPopoverPopoverView.m b/TSPopover/TSPopoverPopoverView.m index 8b3bd5d..35c8735 100644 --- a/TSPopover/TSPopoverPopoverView.m +++ b/TSPopover/TSPopoverPopoverView.m @@ -138,8 +138,8 @@ -(UIImage*)backgroundImage //// Polygon Drawing UIBezierPath* bezierPath = [UIBezierPath bezierPath]; if(self.arrowPosition == TSPopoverArrowPositionVertical){ - arrowFirst = senderLocationInViewPoint.x-ARROW_SIZE/2; - arrowLast = senderLocationInViewPoint.x+ARROW_SIZE/2; + arrowFirst = senderLocationInViewPoint.x-ARROW_SIZE/1.5; + arrowLast = senderLocationInViewPoint.x+ARROW_SIZE/1.5; if(arrowFirst < bgRectPositionX + (self.cornerRadius+MARGIN)){ arrowFirst = bgRectPositionX + (self.cornerRadius+MARGIN); arrowLast = arrowFirst + ARROW_SIZE; From 7368ebd4e0594d9ae46bee72c48dbe512b25ba6a Mon Sep 17 00:00:00 2001 From: Thomas Hempel Date: Sun, 10 Jun 2012 17:01:23 +0200 Subject: [PATCH 2/5] [NEW] Activates show animation --- TSPopover/TSPopoverController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TSPopover/TSPopoverController.m b/TSPopover/TSPopoverController.m index dd9ab76..728d0e7 100644 --- a/TSPopover/TSPopoverController.m +++ b/TSPopover/TSPopoverController.m @@ -164,7 +164,7 @@ - (void) showPopoverWithPoint:(CGPoint)senderPoint [appWindow addSubview:self.view]; - [UIView animateWithDuration:0.0 + [UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionAllowAnimatedContent animations:^{ From a218eb18fdceb8aee862cf9e352fdc5ba5a0282a Mon Sep 17 00:00:00 2001 From: Thomas Hempel Date: Sun, 10 Jun 2012 17:01:57 +0200 Subject: [PATCH 3/5] =?UTF-8?q?[NEW]=C2=A0Adds=20some=20more=20shadows=20t?= =?UTF-8?q?o=20the=20popover=20to=20make=20it=20hover=20a=20little=20bit?= =?UTF-8?q?=20more?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSPopover/TSPopoverController.m | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/TSPopover/TSPopoverController.m b/TSPopover/TSPopoverController.m index 728d0e7..ba05049 100644 --- a/TSPopover/TSPopoverController.m +++ b/TSPopover/TSPopoverController.m @@ -159,6 +159,11 @@ - (void) showPopoverWithPoint:(CGPoint)senderPoint layer.shadowOpacity = 0.5; [self.view addSubview:popoverView]; + + self.view.layer.shadowOffset = CGSizeMake(0, 1); + self.view.layer.shadowColor = [[UIColor colorWithRed:0.37 green:0.37 blue:0.37 alpha:1.0] CGColor]; + self.view.layer.shadowRadius = 0.5; + self.view.layer.shadowOpacity = 0.8; UIWindow *appWindow = [[UIApplication sharedApplication] keyWindow]; [appWindow addSubview:self.view]; From 776900ec375d0f85ced9648abe45734ad59f069d Mon Sep 17 00:00:00 2001 From: Roman Roan Date: Sat, 7 Jul 2012 14:46:17 +1000 Subject: [PATCH 4/5] Fix typo dismissPopoverAnimated, fix show from window --- TSPopover/TSActionSheet.m | 4 ++-- TSPopover/TSPopoverController.h | 2 +- TSPopover/TSPopoverController.m | 12 +++++++----- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/TSPopover/TSActionSheet.m b/TSPopover/TSActionSheet.m index 99c6a46..0dcba94 100644 --- a/TSPopover/TSActionSheet.m +++ b/TSPopover/TSActionSheet.m @@ -184,12 +184,12 @@ - (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)anim if (animated) { - [popoverController dismissPopoverAnimatd:YES]; + [popoverController dismissPopoverAnimated:YES]; [self removeFromSuperview]; } else { - [popoverController dismissPopoverAnimatd:NO]; + [popoverController dismissPopoverAnimated:NO]; [self removeFromSuperview]; } } diff --git a/TSPopover/TSPopoverController.h b/TSPopover/TSPopoverController.h index bf57bf6..5b3aace 100644 --- a/TSPopover/TSPopoverController.h +++ b/TSPopover/TSPopoverController.h @@ -50,6 +50,6 @@ typedef NSUInteger TSPopoverArrowPosition; - (void) showPopoverWithCell:(UITableViewCell*)senderCell; - (void) showPopoverWithRect:(CGRect)senderRect; - (void) view:(UIView*)view touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event; -- (void) dismissPopoverAnimatd:(BOOL)animated; +- (void) dismissPopoverAnimated:(BOOL)animated; @end diff --git a/TSPopover/TSPopoverController.m b/TSPopover/TSPopoverController.m index a10ee79..9c06280 100644 --- a/TSPopover/TSPopoverController.m +++ b/TSPopover/TSPopoverController.m @@ -191,9 +191,11 @@ - (void) showPopoverWithPoint:(CGPoint)senderPoint self.view.layer.shadowOpacity = 0.8; UIWindow *appWindow = [[UIApplication sharedApplication] keyWindow]; - //[appWindow addSubview:self.view]; - - [appWindow.rootViewController.view addSubview:self.view]; + if ([appWindow.rootViewController.view isFirstResponder]) { + [appWindow.rootViewController.view addSubview:self.view]; + } else { + [appWindow addSubview:self.view]; + } [UIView animateWithDuration:0.3 @@ -210,11 +212,11 @@ - (void) showPopoverWithPoint:(CGPoint)senderPoint - (void)view:(UIView*)view touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { - [self dismissPopoverAnimatd:YES]; + [self dismissPopoverAnimated:YES]; } -- (void) dismissPopoverAnimatd:(BOOL)animated +- (void) dismissPopoverAnimated:(BOOL)animated { if (self.view) { if(animated) { From 215d8de4110bae3c5ed0f4e2f6fe03c3bdada709 Mon Sep 17 00:00:00 2001 From: Roman Roan Date: Sat, 7 Jul 2012 18:06:33 +1000 Subject: [PATCH 5/5] Added protocol TSPopoverControllerDelegate --- Demo/TSPopoverDemo/MainViewController.h | 3 ++- Demo/TSPopoverDemo/MainViewController.m | 8 ++++++++ TSPopover/TSPopoverController.h | 10 ++++++++++ TSPopover/TSPopoverController.m | 6 +++++- 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Demo/TSPopoverDemo/MainViewController.h b/Demo/TSPopoverDemo/MainViewController.h index 531475b..008c30a 100644 --- a/Demo/TSPopoverDemo/MainViewController.h +++ b/Demo/TSPopoverDemo/MainViewController.h @@ -7,7 +7,8 @@ // #import +#import "TSPopoverController.h" -@interface MainViewController : UIViewController +@interface MainViewController : UIViewController @end diff --git a/Demo/TSPopoverDemo/MainViewController.m b/Demo/TSPopoverDemo/MainViewController.m index 0517456..6b256b7 100644 --- a/Demo/TSPopoverDemo/MainViewController.m +++ b/Demo/TSPopoverDemo/MainViewController.m @@ -115,6 +115,7 @@ -(void)showPopover:(id)sender forEvent:(UIEvent*)event popoverController.titleText = @"change order"; popoverController.popoverBaseColor = [UIColor lightGrayColor]; popoverController.popoverGradient= NO; + popoverController.delegate=self; // popoverController.arrowPosition = TSPopoverArrowPositionHorizontal; [popoverController showPopoverWithTouch:event]; @@ -136,4 +137,11 @@ -(void) showActionSheet:(id)sender forEvent:(UIEvent*)event [actionSheet showWithTouch:event]; } +- (void)popoverControllerDidDismissPopover:(TSPopoverController *)popoverController{ + NSLog(@"Delegate: Popover did dismiss"); +} +- (BOOL)popoverControllerShouldDismissPopover:(TSPopoverController *)popoverController{ + NSLog(@"Delegate: Popover should dismiss?"); + return YES; +} @end diff --git a/TSPopover/TSPopoverController.h b/TSPopover/TSPopoverController.h index 5b3aace..ebcb202 100644 --- a/TSPopover/TSPopoverController.h +++ b/TSPopover/TSPopoverController.h @@ -24,6 +24,14 @@ enum { }; typedef NSUInteger TSPopoverArrowPosition; +@class TSPopoverController; +@protocol TSPopoverControllerDelegate + +- (void)popoverControllerDidDismissPopover:(TSPopoverController *)popoverController; +- (BOOL)popoverControllerShouldDismissPopover:(TSPopoverController *)popoverController; + +@end + @class TSPopoverPopoverView; @interface TSPopoverController : UIViewController @@ -32,6 +40,7 @@ typedef NSUInteger TSPopoverArrowPosition; TSPopoverArrowDirection arrowDirection; CGRect screenRect; int titleLabelheight; + id delegate; } @property (strong, nonatomic) UIViewController *contentViewController; @@ -43,6 +52,7 @@ typedef NSUInteger TSPopoverArrowPosition; @property (nonatomic) int cornerRadius; @property (nonatomic, readwrite) TSPopoverArrowPosition arrowPosition; @property (nonatomic) BOOL popoverGradient; +@property (nonatomic) id delegate; - (id)initWithContentViewController:(UIViewController*)viewController; - (id)initWithView:(UIView*)view; diff --git a/TSPopover/TSPopoverController.m b/TSPopover/TSPopoverController.m index 9c06280..31ebd40 100644 --- a/TSPopover/TSPopoverController.m +++ b/TSPopover/TSPopoverController.m @@ -35,6 +35,7 @@ @implementation TSPopoverController @synthesize arrowPosition = _arrowPosition; @synthesize popoverBaseColor = _popoverBaseColor; @synthesize popoverGradient = _popoverGradient; +@synthesize delegate; - (id)init { if ((self = [super init])) { @@ -218,7 +219,8 @@ - (void)view:(UIView*)view touchesBegan:(NSSet*)touches withEvent:(UIEvent*)even - (void) dismissPopoverAnimated:(BOOL)animated { - if (self.view) { + + if (self.view && (!delegate || [delegate popoverControllerShouldDismissPopover:self]) ) { if(animated) { [UIView animateWithDuration:0.2 delay:0.0 @@ -234,6 +236,7 @@ - (void) dismissPopoverAnimated:(BOOL)animated self.titleText = nil; self.titleColor = nil; self.titleFont = nil; + [delegate popoverControllerDidDismissPopover:self]; } ]; }else{ @@ -244,6 +247,7 @@ - (void) dismissPopoverAnimated:(BOOL)animated self.titleText = nil; self.titleColor = nil; self.titleFont = nil; + [delegate popoverControllerDidDismissPopover:self]; } }