在Xamarin iOS上使用按钮更改占位符文本

时间:2018-08-31 02:09:10

标签: c# ios xamarin 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 个答案:

答案 0 :(得分:0)

似乎就像许多其他Xamarin功能一样,似乎应该添加但不应添加这些功能,这需要自定义渲染器。

See this link for more.

另一个选择是

  

在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)
    }
};