отображение набираемого номера телефона с текстом для UIAlertView - PullRequest
3 голосов
/ 29 мая 2011

Есть ли способ, что часть текста, отображаемая в iphone UIAlertView, будет телефонным номером, который при нажатии будет набран? может быть, используя тел: как-то?

Ответы [ 2 ]

2 голосов
/ 29 мая 2011

Если вам нравится реализовывать dataDetectorType в тексте вашего сообщения, то нет никакого собственного способа сделать это.Единственный способ - создать подкласс UIAlertView и настроить метод init следующим образом:

- (id)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ... {
    self = [super initWithTitle:title message:nil delegate:delegate cancelButtonTitle:cancelButtonTitle otherButtonTitles:otherButtonTitles, nil];
    if (self) {
        CGRect alertFrame = [self frame];

        UITextView myTextView = [[UITextView alloc] initWithFrame:CGRectMake(alertFrame.origin.x + 10, alertFrame.origin.y + 44, 200, 44)];
        [myTextView setEditable:NO];
        [myTextView setBackgroundColor:[UIColor clearColor]];
        [myTextView setDataDetectorTypes:UIDataDetectorTypeAll];
        [myTextView setText:@"http://www.apple.com"]; // Use your original message string from init

        [self addSubview:myTextView];
        [myTextView release]
    }
    return self;
}

Я тестировал его прямо сейчас, и он работает, но вам нужно потратить немного, чтобы сделать его презентабельным: P

Возможно, использование того, что написал Джхалия, быстрее и чище.

0 голосов
/ 29 мая 2011

Да, это возможно, установив делегат ( UIAlertViewDelegate ) вашего UIAlertView . Прочитайте сообщение и title из вашего UIAlertView , используя указанные ниже свойства.

@property(nonatomic, copy) NSString *message
@property(nonatomic, copy) NSString *title

Вам необходимо реализовать метод делегата, чтобы получить информацию о том, какая кнопка нажата.

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

Вы также можете перейти по ссылке для получения индекса нажатой кнопки и набрать номер телефона с помощью тел: .


Итак, ваш код может быть примерно таким, как показано ниже.

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    //Access `title` and `message` of your **UIAlertView**
    NSString* alertTitle = alertView.title;
    NSString* alertMessage = alertView.message;
    // Formatted the phone number and assign it to a string.
    NSString* myFormattedPhNumber = /*Use StringWithFormat function of NSString */;
    if (buttonIndex == 0)
    {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:myFormattedPhNumber];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...