C0L.PAN1C
C0L.PAN1C

Reputation: 12243

ToolTips in iOS through native UI Controls?

How do I create tooltips or something similar in iOS, without using any third party classes? I have a UIButton that I'd like to have a tooltip popup for a few seconds or until it's cleared. I have seen third party classes and libraries, but want to know if natively it's supported. I also want to show an arrow popping up from where the tooltip is coming from. I've seen some UIActionSheet Popups have this arrow.

Cheers, Amit

Upvotes: 4

Views: 9625

Answers (5)

stackich
stackich

Reputation: 5237

On iOS17, Apple has introduced new framework called TipKit.

Now you can natively present tooltips.

Upvotes: 1

user3385666
user3385666

Reputation: 35

I saw that some of you is using CMPopTip, great "library". Cool way!

Just a few things, if you use that in iOS7, you have some deprecation.

New use of the text deprecated part (this is an example)

    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
    paragraphStyle.alignment = self.titleAlignment;

    [self.title drawInRect:titleFrame withAttributes:@{NSFontAttributeName:self.titleFont,NSParagraphStyleAttributeName:paragraphStyle}];

Bye!

Upvotes: 1

C0L.PAN1C
C0L.PAN1C

Reputation: 12243

Well I ended up using the third party tooltip CMTopTipView afterall. It's relatively low overhead, just a header and implementation. Modified it slightly to account for ARC. Here is what I did:

#import "CMPopTipView.h"

CMPopTipView *navBarLeftButtonPopTipView;

- (void) dismissToolTip
{
   [navBarLeftButtonPopTipView dismissAnimated:YES];
}

- (void) showDoubleTap
{
    navBarLeftButtonPopTipView = [[CMPopTipView alloc] 
       initWithMessage:@"DOUBLE Tap \n to view details"] ;
    navBarLeftButtonPopTipView.delegate = self;
    navBarLeftButtonPopTipView.backgroundColor = [UIColor darkGrayColor];
    navBarLeftButtonPopTipView.textColor = [UIColor lightTextColor];
    navBarLeftButtonPopTipView.opaque = FALSE;
    [navBarLeftButtonPopTipView presentPointingAtView:catButton1 
        inView:self.view animated:YES];
    navBarLeftButtonPopTipView.alpha = 0.75f;

    NSTimer *timerShowToolTip = [NSTimer scheduledTimerWithTimeInterval:5.0 
     target:self 
     selector:@selector(dismissToolTip) userInfo:nil repeats:NO];

 }

Upvotes: 6

C0L.PAN1C
C0L.PAN1C

Reputation: 12243

Well what I ended up doing was relatively simple. I ended up using UIActionSheet with no Buttons just a text. Then used a showFromRect from a coordinate plane where the UIButton was in self.view.

UIActionSheet *popup = [[UIActionSheet alloc] 
initWithTitle:@"DOUBLE Tap \n to view details." 
delegate:self cancelButtonTitle:@"Cancel" 
destructiveButtonTitle:nil otherButtonTitles: nil];

[popup sizeToFit];
popup.tag = 9999; 
CGRect myImageRect = CGRectMake(240.0f, 605.0f, 30.0f, -40.0f);
[popup showFromRect:myImageRect inView:self.view animated:YES];

I may just suck it up and use CMPopTipView (third party control) to adjust it's size and opacity and fading alpha.

Upvotes: 1

shawnwall
shawnwall

Reputation: 4607

If you are on iPad you could use UIPopoverView. You also have the UIMenuController to work with for 'popover' like functionality on iPhone or iPad: tutorial. Beyond that you could just make your own UIView subclass to do this but then you'd have to handle the arrow yourrself.

Upvotes: 3

Related Questions