所以对于某些项目我正在使用Xamarin.Forms。
由于使用Xamarin.Forms,一个区域的速度令人难以忍受。我使用CustomRenderer来解决涉及列表的特定区域。
回到项目并升级软件包之后,我突然遇到了最奇怪的错误。
我将"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);
}
}