您的位置:首页 > 产品设计 > UI/UE

UILable响应点击事件

2015-11-12 17:47 169 查看



为了实例化咱们的Label时必须做点啥.. 先来个协议.

.h文件
复制代码

#import <Foundation/Foundation.h>

@class MyLabel;

@protocol MyLabelDelegate <NSObject>

@required

- (void)myLabel:(MyLabel *)myLabel touchesWtihTag:(NSInteger)tag;

@end

新建类,继承UILabel.
复制代码

@interface MyLabel : UILabel {

    id <MyLabelDelegate> delega
4000
te;

}

@property (nonatomic, assign) id <MyLabelDelegate> delegate;

- (id)initWithFrame:(CGRect)frame;

@end

.m文件
复制代码

#import "MyLabel.h"

#define FONTSIZE 13

#define COLOR(R,G,B,A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]

@implementation MyLabel

@synthesize delegate;

// 设置换行模式,字体大小,背景色,文字颜色,开启与用户交互功能,设置label行数,0为不限制

- (id)initWithFrame:(CGRect)frame {

    if (self = [super initWithFrame:frame])

    {

        [self setLineBreakMode:UILineBreakModeWordWrap|UILineBreakModeTailTruncation];

        [self setFont:[UIFont systemFontOfSize:FONTSIZE]];

        [self setBackgroundColor:[UIColor clearColor]];

        [self setTextColor:COLOR(59,136,195,1.0)];

        [self setUserInteractionEnabled:YES];

        [self setNumberOfLines:0];

    }

    return self;

}

// 点击该label的时候, 来个高亮显示

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    [self setTextColor:[UIColor whiteColor]];

}

// 还原label颜色,获取手指离开屏幕时的坐标点, 在label范围内的话就可以触发自定义的操作

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

    [self setTextColor:COLOR(59,136,195,1.0)];

    UITouch *touch = [touches anyObject];

    CGPoint points = [touch locationInView:self];

    if (points.x >= self.frame.origin.x && points.y >= self.frame.origin.x && points.x <= self.frame.size.width && points.y <= self.frame.size.height)

    {

        [delegate myLabel:self touchesWtihTag:self.tag];

    }

}

- (void)dealloc {

    [super dealloc];

}

@end

实例化:
复制代码

MyLabel *webSite = [[MyLabel alloc] initWithFrame:CGRectMake(10, 10, 100, 20)];

[webSite setText:@"http://www.google.com"];

[webSite  setDelegate:self];

[self.view addSubview:webSite];

[webSite  release];

#pragma mark MyLabel Delegate Methods

// myLabel是你的MyLabel委托的实例, tag是该实例的tag值, 有点多余, 哈哈

- (void)myLabel:(MyLabel *)myLabel touchesWtihTag:(NSInteger)tag {

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:webSite.text]];

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: