在键入挂起时设置UITextField的文本然后崩溃应用程序

时间:2011-01-24 04:04:59

标签: c# objective-c ios xamarin.ios

我正在创建一些动态控件,并尝试连接到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,以防来自该社区的某个人知道问题可能是什么。

先谢谢偷看,这让我疯狂。

1 个答案:

答案 0 :(得分:4)

您可能通过修改EditingChanged方法中的内容导致堆栈溢出(导致它重新进入自身)。

尝试使用EditingEnded事件,这是在控件重新响应其第一个响应者状态时引发的。

如果您需要在用户输入时进行,请尝试使用ShouldChangeCharacters事件。这两个都是关键字UITextFieldDelegate,而不是使用中央通知系统,应该解决问题。