2011-11-07 112 views

回答

3

我不確定哪個是你的問題。第一個您似乎已經回答自己,即 解決方案(從您的鏈接)是使用NSNotificationCenter.DefaultCenter.AddObserver

第二個是約取消訂閱 - 如果您想停止觀察,應該調用上一個方法副本,即NSNotificationCenter.DefaultCenter.RemoveObserver

只需保留從AddObserver返回的對象,以便您可以將其提供給RemoveObserver

注:如果我不明白你的問題正確,請使用編輯,並添加你想要達到什麼樣的一些細節和/或代碼,我們會盡我們最大的努力幫助:-)

+0

感謝poupou,我跳了一下,可能有一個更簡單的方法。在從AddObserver返回的對象上持有引用我能夠退訂通知 –

1
+0

沒有像按鍵一樣工作的事件 –

+1

我能夠使用'textField:shouldChangeCharactersInRange:replacementString:'方法每一次按鍵,儘可能接近我所知道的。儘管如此,令人失望的是你必須研究'replacementString:'值,因爲當發送這個消息時'textField.text'屬性不會被更新。 – colinta

2

由於colinta建議,做到這一點

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    NSString *text = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
    NSLog(@"range = %@, replacement = %@, text = %@", NSStringFromRange(range), string, text); 
    return YES; 
} 

- (BOOL)textFieldShouldClear:(UITextField *)textField { 
    NSLog(@"clear text"); 
    return YES; 
} 

如果輸入經拼寫建議更改,它也會起作用。

+0

如果您需要響應文本字段編輯範圍之外的按鍵,這將不起作用。例如,假設您需要捕獲單個按鍵並移至下一個字段。你不能用這種方法做到這一點。你必須使用鍵盤事件。 –

0

觀察UITextField變化最徹底的方法是

_textField.AddTarget((sender, e) => 
{ 
    // Do your stuff in here 
}, UIControlEvent.EditingChanged); 

您不必訂閱全系統的通知中心,你不必註銷,當你destroing文本字段觀察員。

希望這將有助於未來的人:)