Xamarin 在UITextfield中,当使用NSMutableAttributedString应用颜色时,未对焦时颜色应用不正确

Xamarin 在UITextfield中,当使用NSMutableAttributedString应用颜色时,未对焦时颜色应用不正确,xamarin,xamarin.ios,uitextfield,nsattributedstring,Xamarin,Xamarin.ios,Uitextfield,Nsattributedstring,使用NSMutableAttributeString,我使用UITextfield为字符串中的特定字符应用了颜色。我的代码: uITextField = new UITextField(); uITextField.BackgroundColor = UIColor.LightGray; uITextField.Frame = new CGRect(10, 150, 350, 40); uITextField.Text = "Hai i am ________________"; uITextF

使用NSMutableAttributeString,我使用UITextfield为字符串中的特定字符应用了颜色。我的代码:

uITextField = new UITextField(); uITextField.BackgroundColor = UIColor.LightGray;
uITextField.Frame = new CGRect(10, 150, 350, 40);
uITextField.Text = "Hai i am ________________";
uITextField.TextColor = UIColor.Green;
uITextField.EditingChanged += UITextField_EditingChanged;

private void UITextField_EditingChanged(object sender, EventArgs e)
    {
        var promptStringAttributes = new UIStringAttributes
        {
            ForegroundColor = UIColor.Red
        };
        var promptString = new NSMutableAttributedString(uITextField.Text);
        char[] mText = uITextField.Text.ToCharArray();
        Char prchar = '_';
        for (int i = 0; i < mText.Length; i++)
        {
            if (!string.IsNullOrEmpty(uITextField.Text) && prchar == mText[i])
            {
                promptString.SetAttributes(promptStringAttributes.Dictionary, new NSRange(i, 1));
            }
        }
        uITextField.AttributedText = promptString;
    }
uITextField=new uITextField();uITextField.BackgroundColor=UIColor.LightGray;
Frame=newCGRECT(10150350,40);
uITextField.Text=“Hai i i am\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
uITextField.TextColor=UIColor.Green;
uITextField.EditingChanged+=uITextField\u EditingChanged;
私有void UITextField_EditingChanged(对象发送方,事件参数e)
{
var promptStringAttributes=新的UIStringAttributes
{
ForegroundColor=UIColor.Red
};
var promptString=新的nsmutableAttributeString(uITextField.Text);
char[]mText=uITextField.Text.ToCharArray();
Char prchar='u';
for(int i=0;i
最初,文本将为绿色。请参见下图:

在删除UItextfield中的最后一个字符后,我会将某些字符的颜色更改为红色

我面临的问题是,在取消UITextfield的焦点后,红色将应用于UITextfield中的所有字符,并且文本颜色未正确显示。仅为字符串中的所有字符应用设置属性颜色。请参见下图:

请给出一个可能的解决方案,以限制在xamarin iOS中取消聚焦UITextField时为所有字符串应用设置属性颜色。

改进您的方法

var promptStringAttributes_Red = new UIStringAttributes
{
   ForegroundColor = UIColor.Red
};
var promptStringAttributes_Green = new UIStringAttributes
{
   ForegroundColor = UIColor.Green
};
var promptString = new NSMutableAttributedString(uITextField.Text);
char[] mText = uITextField.Text.ToCharArray();
Char prchar = '_';
for (int i = 0; i < mText.Length; i++)
{
  if (!string.IsNullOrEmpty(uITextField.Text) && mText[i] ==prchar)
  {
    promptString.SetAttributes(promptStringAttributes_Red.Dictionary, new NSRange(i, 1));
  }

  else
  {
     promptString.SetAttributes(promptStringAttributes_Green.Dictionary, new NSRange(i, 1));
  }
}
uITextField.AttributedText = promptString;
var promptStringAttributes\u Red=新的UIStringAttributes
{
ForegroundColor=UIColor.Red
};
var promptStringAttributes_Green=新UIStringAttributes
{
ForegroundColor=UIColor.Green
};
var promptString=新的nsmutableAttributeString(uITextField.Text);
char[]mText=uITextField.Text.ToCharArray();
Char prchar='u';
for(int i=0;i