Изменить заполнитель текста с помощью кнопки на 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)
}
};