2011-01-24 42 views
0

我創建了一些動態控件,我試圖掛接到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正確的方式去是或有另一種方法/屬性我需要使用?

我標記了obj-c以防萬一來自該社區的人知道問題可能是什麼。

在此先感謝窺視,這是讓我瘋狂。

+0

將錯誤標記從'c#'更改爲'iPhone' – Robin

+0

@robin - MonoTouch ** IS ** C#因此我已將標記放回 – Marko

回答

4

你很可能會通過修改EditingChanged方法的內容導致堆棧溢出(使其重新進入本身)。

嘗試使用EditingEnded事件相反,當控制辭職第一響應者的地位被提高。

如果您需要做的是爲用戶類型,請嘗試使用ShouldChangeCharacters事件來代替。這兩個都是從UITextFieldDelegate中取消,而不是使用中央通知系統,並且應該解決問題。

+0

我認爲您是對的@Geoff - 而您的回答指出我對這個優秀的文章http://escoz.com/editing-decimal-numbers-with-uitextfield-control-with-monotouch/也許將它添加到您的答案爲未來的MonoTouch-Ers :) – Marko

+0

感謝您的鏈接到我的博客。當我讀到問題標題時,我想到了將它鏈接到這裏,很好,它已經完成了! :) –