Изменить заполнитель текста с помощью кнопки на Xamarin iOS

Я создаю View Controller, который записывает номер телефона или адрес электронной почты пользователя, и я хочу, чтобы местозаполнитель текстового поля изменился, когда они выбирают либо кнопку "Телефон", либо кнопку "Электронная почта".

Это просто кнопка, которая должна изменить заполнитель

 void PhoneSelectBtn(object sender, EventArgs e)
    {
        EmailPhoneBox.AttributedPlaceholder = new NSAttributedString("Phone");
    }

и каждый раз, когда я запускаю приложение, оно падает, и это ошибка, которую я получаю: Objective-C exception thrown. Name: NSUnknownKeyException Reason: [<UIViewController 0x7f813ec3b870> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key EmailPhoneBox. Native stack trace:

Я пробовал другие варианты, такие как использование сегментированного элемента управления (очевидно, он немного отличается от настройки кнопки), и я получаю тот же результат. Я изменил методы кнопок, классы, и один и тот же результат происходит каждый раз. Там нет ненужных событий, которые не привязаны ни к чему. Из идей. Если бы можно было шаг за шагом объяснить, что делать, это было бы здорово. Я уверен, что это не сложно, но я только учусь, и мне трудно найти соответствующую документацию по таким мелочам, как эта. Спасибо джош

1 ответ

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

Смотрите эту ссылку для получения дополнительной информации.

Другой вариант

Установите строку-заполнитель для текста вашего редактора в Xaml Затем в коде позади файла:

InitializeComponent();

var placeholder = myEditor.Text;

myEditor.Focused += (sender, e) =>
{
     // Set the editor's text empty on focus, only if the place 
     // holder is present
     if (myEditor.Text.Equals(placeholder))
     {
          myEditor.Text = string.Empty;
          // Here You can change the text color of editor as well
          // to active text color
     }
};

myEditor.Unfocused += (sender, e) => 
{
     // Set the editor's text to place holder on unfocus, only if 
     // there is no data entered in editor
    if (string.IsNullOrEmpty(myEditor.Text.Trim()))
    {
        myEditor.Text = placeholder;
        // Here You can change the text color of editor as well
        // to dim text color (Text Hint Color)
    }
};
Другие вопросы по тегам