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

标签 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 秒,然后崩溃,应用程序输出窗口中没有任何内容。

设置 UITextFieldText 属性是否正确,还是我需要使用其他方法/属性?

我已经标记了 obj-c,以防来自该社区的人知道问题可能出在哪里。

提前谢谢大家,这让我抓狂。

最佳答案

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

尝试改用 EditingEnded 事件,该事件在控件放弃其第一响应者状态时引发。

如果您需要在用户键入时执行此操作,请尝试改用 ShouldChangeCharacters 事件。这两个都关闭了 UITextFieldDelegate,而不是使用中央通知系统,应该可以解决问题。

关于c# - 在键入挂起时设置 UITextField 的文本然后使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4778531/

相关文章:

ios - 使用 localIdentifier,swift 访问视频

IOS如何隐藏键盘顶部的顶部栏(带有完成按钮)?

c# 使用 Linq 比较 List<T> (s)

c# - 在 Windows 8 中隐藏任务栏

java - bash 脚本错误 "exit code 126"

ios - iOS-UIButton文本左对齐等于另一个UIButton包含图像的文本

ios - 如何以编程方式重定向到 iOS 中的电池健康页面?

c# - 使用 EF 检查表中新记录的成本最低的操作

C# 泛型 : cast generic type to value type

objective-c - 尽管 objectID 字符串比较工作正常,但 MagicalRecord + Core Data 未在上下文之间找到对象