我有一個UITextView子類,我添加了一個NSNotificationCenter觀察者。但是我又在哪裏刪除觀察者?何時何地致電RemoveObserver
我的代碼:
_textDidChangeNotification = UITextView.Notifications.ObserveTextDidChange(TextDidChange);
在Objective CI會做的dealloc方法,但我不知道在哪裏做同樣的在C#
據我瞭解的文件我應該叫
_textDidChangeNotification.Dispose()
我試圖有一個
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
if (disposing)
{
_textDidChangeNotification.Dispose();
}
}
但它永遠不會被調用。
完整的類,如要求:
public class PlaceholderTextView : UITextView
{
public string Placeholder
{
get { return PlaceholderLabel.Text; }
set
{
PlaceholderLabel.Text = value;
PlaceholderLabel.SizeToFit();
}
}
protected UILabel PlaceholderLabel { get; set; }
protected NSObject _textDidChangeNotification;
public override string Text
{
get
{
return base.Text;
}
set
{
base.Text = value;
AdjustPlaceholderHidden();
}
}
public PlaceholderTextView()
{
SetupLayout();
_textDidChangeNotification
= UITextView.Notifications.ObserveTextDidChange(TextDidChange);
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
_textDidChangeNotification.Dispose();
}
protected void SetupLayout()
{
PlaceholderLabel = new UILabel(new CGRect(0, 9, 0, 0));
PlaceholderLabel.TextColor = UIColor.FromWhiteAlpha(0.702f, 1f);
AddSubview(PlaceholderLabel);
}
protected void AdjustPlaceholderHidden()
{
if (Text.Length > 0)
{
PlaceholderLabel.Hidden = true;
}
else
{
PlaceholderLabel.Hidden = false;
}
}
protected void TextDidChange(object sender, Foundation.NSNotificationEventArgs args)
{
AdjustPlaceholderHidden();
}
}
有問題的類的UIView(的UITextView)的子類,所以沒有ViewWillDisappear或ViewDidDisappear或相似。 –
你將UITextView添加到什麼?你可以在你添加視圖的任何地方調用UITextView的配置嗎? –
當然,我可以從頂部的UIViewController手動完成所有操作。但是,這不會是一個正常的UIView。如果是Objective C,我可以在dealloc方法中執行它 –