【发布时间】:2017-08-18 22:13:21
【问题描述】:
我正在创建一个具有条目的应用程序。我正在尝试将条目限制为仅允许数字输入。我已经尝试过使用键盘 =“数字”。然而,对于 iPad,键盘上的字符不仅仅是数字。所以我不得不限制输入的内容。但是,当我这样做时,例如,如果用户键入括号,它确实会阻止输入字符。但是如果用户按下撤消,它就会崩溃。我认为这是因为软件键盘与应用程序是分开的,所以它正在寻找那个括号字符,但它不存在。这是我的代码:
private void Entry_TextChanged(object sender, TextChangedEventArgs e)
{
Entry theEntry = (Entry)sender;
string entryText = theEntry.Text;
if(entryText != null && entryText.Length != 0)
{
char theMostRecentInput = entryText[entryText.Length - 1];
if(!Extension.IsNumeric(theMostRecentInput))
{
theEntry.TextChanged -= Entry_TextChanged;
theEntry.Text = e.OldTextValue;
theEntry.TextChanged += Entry_TextChanged;
}
}
}
感谢您的帮助!
【问题讨论】:
-
不确定如何解决此问题,但您还有另一个错误。您假设最近键入的字符是字符串中的最后一个字符。解决此问题的更好方法可能是在用户完成表单时验证数字,并在字符串包含无效字符时通知用户。在用户输入的文本框中设置字符串会导致意外结果。
标签: c# visual-studio xamarin xamarin.ios keyboard