因此对于某些项目,我正在使用Xamarin.Forms。
由于使用Xamarin的速度非常慢,因此我使用了CustomRenderer来解决一个涉及列表的特定区域。
回到项目并升级软件包后,我突然发现了最奇怪的错误。
我将"1234"
设置为EditText
,并且EditText.Text
属性突然变成"49505152"
-字符串被转换为它的ascii等效项。
这是一个已知问题吗?有人知道如何解决吗?
答案 0 :(得分:0)
问题的原因是我的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);
}
}