Xamarin.forms android EditText控件将输入转换为ascii序列的原因是什么

Xamarin.forms android EditText控件将输入转换为ascii序列的原因是什么,xamarin.forms,xamarin.android,Xamarin.forms,Xamarin.android,所以对于一些项目,我正在与Xamarin.Forms合作 由于Xamarin.Forms的一个区域速度太慢了,我使用了CustomRenderer来解决一个涉及列表的特定区域 回到项目并升级软件包后,我突然发现了最奇怪的bug 我正在将“1234”设置为EditText,而EditText.Text属性突然变为“49505152”——字符串被转换为其ascii等效值 这是一个已知的问题吗?有人知道如何修复它吗?问题的原因是我的EditText应用了InputFilter,并且在更新包后,突然

所以对于一些项目,我正在与Xamarin.Forms合作

由于Xamarin.Forms的一个区域速度太慢了,我使用了CustomRenderer来解决一个涉及列表的特定区域

回到项目并升级软件包后,我突然发现了最奇怪的bug

我正在将
“1234”
设置为
EditText
,而
EditText.Text
属性突然变为
“49505152”
——字符串被转换为其ascii等效值


这是一个已知的问题吗?有人知道如何修复它吗?

问题的原因是我的
EditText
应用了
InputFilter
,并且在更新包后,突然执行了另一个
FilterFormatted
的代码路径

    public ICharSequence FilterFormatted(ICharSequence source, int start, int end, ISpanned dest, int dstart, int dend)
    {
        var startSection = dest.SubSequenceFormatted(0, dstart);
        var insert = source.SubSequenceFormatted(start, end);
        var endSection = dest.SubSequenceFormatted(dstart, dest.Length());
        var merged = $"{startSection}{insert}{endSection}";
        if (ValidationRegex.IsMatch(merged) && InputRangeCheck(merged, CultureInfo.InvariantCulture))
        {
            StringBuilder sb = new StringBuilder(end - start);
            for (int i = start; i < end; i++)
            {
                char c = source.CharAt(i);
                sb.Append(c);
            }

            if (source is ISpanned) {
                SpannableString sp = new SpannableString(sb);
                TextUtils.CopySpansFrom((ISpanned)source, start, sb.Length(), null, sp, 0);
                return sp;
            } else {
                // AFTER UPDATE THIS PATH WAS ENTERED UNLIKE BEFORE
                return sb;
            }
        }
        else
        {
            return new SpannableString(string.Empty);
        }
    }
public ICharSequence FilterFormatted(ICharSequence源、int开始、int结束、ISpanned结束、int开始、int结束)
{
var startSection=dest.subsequenceformated(0,dstart);
var insert=source.subsequenceformated(开始、结束);
var endSection=dest.subsequenceformated(dstart,dest.Length());
var merged=$“{startSection}{insert}{endSection}”;
if(ValidationRegex.IsMatch(合并)和&InputRangeCheck(合并,CultureInfo.InvariantCulture))
{
StringBuilder sb=新的StringBuilder(结束-开始);
for(int i=start;i
我认为,如果不看到在自定义渲染器中实现的实际代码,就很难说出任何有用的信息。请把它加到你的问题上。@GeraldVersluis没关系。这是一种我必须自己调试才能找到答案的代码,因为这是一种不常见的代码