我正在创建一些动态控件,并尝试连接到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秒,然后在应用程序输出窗口中没有任何内容崩溃。
设置Text
的{{1}}属性是正确的方法是否需要使用其他方法/属性?
我已经标记了obj-c,以防来自该社区的某个人知道问题可能是什么。
先谢谢偷看,这让我疯狂。
答案 0 :(得分:4)
您可能通过修改EditingChanged方法中的内容导致堆栈溢出(导致它重新进入自身)。
尝试使用EditingEnded事件,这是在控件重新响应其第一个响应者状态时引发的。
如果您需要在用户输入时进行,请尝试使用ShouldChangeCharacters事件。这两个都是关键字UITextFieldDelegate,而不是使用中央通知系统,应该解决问题。