我正在创建一些动态控件并尝试连接到 EditingChanged 事件,以便我可以在用户输入时在某些 UITextFields 上附加一个百分号...
代码如下
infoCaptureTextBox.EditingChanged += delegate (object sender, EventArgs e) {
UITextField _thisTextBox = (UITextField)sender;
string txtValue = _thisTextBox.Text.Replace("%", "");
int numValue = 0;
if(int.TryParse(txtValue, out numValue)) {
if(infoCaptureField.InputType == "pc")
_thisTextBox.Text = numValue.ToString() + "%";
}
else {
infoCaptureTextBox.Text = "0";
}
};
这一直有效,直到您当然按下一个键,此时应用程序挂起大约 15-20 秒,然后崩溃,应用程序输出窗口中没有任何内容。
设置 UITextField
的 Text
属性是否正确,还是我需要使用其他方法/属性?
我已经标记了 obj-c,以防来自该社区的人知道问题可能出在哪里。
提前谢谢大家,这让我抓狂。
最佳答案
您可能通过修改 EditingChanged 方法中的内容(导致它重新进入自身)而导致堆栈溢出。
尝试改用 EditingEnded 事件,该事件在控件放弃其第一响应者状态时引发。
如果您需要在用户键入时执行此操作,请尝试改用 ShouldChangeCharacters 事件。这两个都关闭了 UITextFieldDelegate,而不是使用中央通知系统,应该可以解决问题。
关于c# - 在键入挂起时设置 UITextField 的文本然后使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4778531/