-1

テキストがwww.google.comである UILabel があります。誰かがカーソルをテキストの上に移動して押すと、Google のホームページが開くはずです。出来ますか?方法を説明してください。

[emptyLabel setText:@"Sorry it looks like google is not currently available in any of your favourite places nearby, why not ask them to sign up at www.google.com"]
4

4 に答える 4

1
// While Loading the view

[self underlineLabel:label withFont:[UIFont systemFontOfSize:17]];

UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myAction:)]; 
[label addGestureRecognizer:gr];
gr.numberOfTapsRequired = 1;

//

- (CGFloat)widthOfString:(NSString *)string withFont:(UIFont *)font {
    CGSize stringSize = [string sizeWithFont:font];
    CGFloat width = stringSize.width;
    return width;
}

- (CGFloat)heightOfString:(NSString *)string withFont:(UIFont *)font {
    CGSize stringSize = [string sizeWithFont:font];
    CGFloat height = stringSize.height;
    return height;
}

-(void)underlineLabel:(UILabel *)lbl withFont:(UIFont *)fnt {
    float wdth = [self widthOfString:lbl.text withFont:fnt];
    float higt = [self heightOfString:lbl.text withFont:fnt];
    UIView *viw = [[UIView alloc]initWithFrame:CGRectMake((lbl.frame.size.width - wdth) / 2, (lbl.frame.size.height / 2) + (higt / 2), wdth, 2)];
    [viw setBackgroundColor:[UIColor bluecolor]];
    [lbl addSubview:viw];
}

// To Add action for gesture recognizer:

- (void)myAction:(UITapGestureRecognizer *)gr {
    // Define actions here
}
于 2013-11-19T10:20:49.973 に答える
1

また、UITextView を使用して、データ検出機能を有効にし、UILabel のような編集を無効にすることもできます。必要な属性が設定された UItextview は、http リンク、電話番号などを自動的に検出します。

UILabel を使用する必要がある場合は、UITapgesture を追加し、タップのターゲットを提供する必要があります。

于 2013-09-05T11:58:01.797 に答える
1

Nimbus プロジェクトNIAttributedLabelからの使用を検討してください。これは、タップ可能なリンクを自動検出して作成するドロップインの代替品です。UILabel

于 2013-09-05T11:52:33.450 に答える
0

URLを自動的に検出するUTTextViewを使用するか、URLに対して個別にボタンを作成します。ありがとう。

于 2014-05-12T13:14:51.327 に答える