9

この質問は以前に尋ねられて回答されたと思いますが、見つかりませんでした。Fancy Label と Three20 を指している回答が表示されますが、それらは私が望んでいるものとはまったく異なるか、いくつかのポイントを見逃している可能性があります。

基本的にはアプリユーザーからのフィードバックを得たいので、

何とか何とか、xxxxxx@gmail.com で私に電子メールを送ってください。

メールアドレスをクリック可能にし、メールコンポーザを開いて、ユーザーが編集および送信できるようにします。

それが私が必要なものすべてです。入手方法は?ありがとう。

4

4 に答える 4

8

次のように UITextView を使用できます。

UITextView *myView = [[UITextView alloc] initWithFrame: CGRectMake(0, 0, 300, 50)];
    myView.text = @"this is http://google.com link";
    myView.editable = NO;
    myView.dataDetectorTypes = UIDataDetectorTypeLink;    
    //myView.message.dataDetectorTypes = UIDataDetectorTypePhoneNumber|UIDataDetectorTypeLink; for multiple data detection
    [self.view addSubview:myView];
    [myView release];

複数のデータ検出を選択するには:

ここに画像の説明を入力

于 2013-02-16T05:35:10.810 に答える
2

これは非常に簡単です。

.h ファイルにラベル アウトレットを作成する

@interface ContactUsViewController : UIViewController<MFMailComposeViewControllerDelegate>

@property (strong, nonatomic) IBOutlet UILabel *mail1Lbl;

このコードを.mファイルに配置します

- (void)viewDidLoad
{
    [super viewDidLoad];

    UITapGestureRecognizer* mail1LblGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(mail1LblTapped:)];
    // if labelView is not set userInteractionEnabled, you must do so
[mail1Lbl setText:@"xxxxxx@gmail.com"];
    [mail1Lbl setUserInteractionEnabled:YES];
    [mail1Lbl addGestureRecognizer:mail1LblGesture];
}

- (void)mail1LblTapped:(id)sender
{
    if ([MFMailComposeViewController canSendMail])
    {

        MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
        mailer.mailComposeDelegate = self;
        [mailer setSubject:@""];
        NSArray *toRecipients = [NSArray arrayWithObjects:@"xxxxxx@gmail.com", nil];
        [mailer setToRecipients:toRecipients];
        NSString *emailBody = @"";
        [mailer setMessageBody:emailBody isHTML:NO];
        mailer.navigationBar.barStyle = UIBarStyleBlackOpaque;
        [self presentModalViewController:mailer animated:YES];

    }
    else
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failure"
                                                        message:@"Your device doesn't support the composer sheet"
                                                       delegate:nil
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:nil];
        [alert show];
    }
}
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
    switch (result)
    {
        case MFMailComposeResultCancelled:
            NSLog(@"Mail cancelled: you cancelled the operation and no email message was queued.");
            break;
        case MFMailComposeResultSaved:
            NSLog(@"Mail saved: you saved the email message in the drafts folder.");
            break;
        case MFMailComposeResultSent:
            NSLog(@"Mail send: the email message is queued in the outbox. It is ready to send.");
            break;
        case MFMailComposeResultFailed:
            NSLog(@"Mail failed: the email message was not saved or queued, possibly due to an error.");
            break;
        default:
            NSLog(@"Mail not sent.");
            break;
    }
    // Remove the mail view
    [self dismissModalViewControllerAnimated:YES];
}
于 2013-02-16T05:15:52.890 に答える
1

html / mailto: アンカーを使用する Webview は、これで問題なく動作するはずです...デフォルトの iOS のものに合わせてスタイルを設定する必要があるかもしれませんが、そうです。

于 2013-02-16T05:06:06.777 に答える
1

同じように使用できますNSAttributedString。このタイプの文字列を使用すると、時間を大幅に節約できます。ただし、これを使用する前に、テキストの正確な位置を知る必要があります。位置と長さを知ることで、その文字列を簡単にカスタマイズできます。サンプル プロジェクトのダウンロードについては、このリンクを参照してください。NSAttributed 文字列。ただし、ios 6 を使用している場合は、このサンプル コードを使用する必要はありません。NSAttributedString を直接使用できます。iOS6ではUILabelがこのタイプの文字列をサポートしているためです。

lbl.aatributText = @"Your NSAttributed string".

編集: たどることができるいくつかのリンクがあります: 1. UILabel の NSAttributedString でタップ可能な「リンク」を作成しますか? 2.ハイパーリンクとしての Objective-C UILabel 3.テキスト内で特定の単語をその意味のためにタッチ可能にする方法は?

于 2013-02-16T05:54:46.303 に答える