Как добавить контактную ссылку Url на URL-адрес в сообщении UIAlertView?

Я хочу добавить кликабельную ссылку url в сообщение UIAlertView. Таким образом, когда пользователь видит предупреждение, они могут касаться ссылки внутри сообщения. В качестве альтернативы, они могут пойти дальше, нажав кнопку OK.

Можно ли это сделать? Как?

Ответ 1

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

Есть несколько подходов, которые вы можете предпринять. Один из них является подклассом UIAlertView, и здесь вы можете найти короткий учебник: Подкласс UIAlertView. В вашем подклассе вы могли бы создать предупреждение так, как вам нравится использовать текст с сенсорным экраном. Посмотрите этот учебник, чтобы сделать это.

Ответ 2

Сегодня я столкнулся с этой проблемой, мне нужно было иметь телефонные номера и адреса для звонков в моем предупреждающем представлении, и я был в тупике довольно долго, поскольку пользовательские виды предупреждений не могут быть и речи.

После некоторых исследований кажется, что вы можете добавить текстовое представление в alertview, которое, казалось, решило мою проблему. Вот мой подход, который позволяет динамически масштабировать alertviews (обратите внимание: используя C# с Xamarin):

// create text view with variable size message
UITextView alertTextView = new UITextView();
alertTextView.Text = someLongStringWithUrlData;

// enable links data inside textview and customize textview
alertTextView.DataDetectorTypes = UIDataDetectorType.All;
alertTextView.ScrollEnabled = false; // is necessary 
alertTextView.BackgroundColor = UIColor.FromRGB(243, 243, 243); // close to alertview default color
alertTextView.Editable = false;

// create UIAlertView 
UIAlertView Alert = new UIAlertView("Quick Info", "", null, "Cancel", "OK");
Alert.SetValueForKey(alertTextView, (Foundation.NSString)"accessoryView");

// IMPORTANT/OPTIONAL need to set frame of textview after adding to subview
// this will size the text view appropriately so that all data is shown (also resizes alertview
alertTextView.Frame = new CoreGraphics.CGRect(owner.View.Center, alertTextView.ContentSize);
Alert.Show();