我試圖在我的UILabel中的文本更改時收到通知,以便我可以調整它以適應新文本。這裏是我的代碼:UILabel上的AddObserver無法正常工作
public class MessageContainer : UILabel
{
private readonly int _width;
public MessageContainer(int width)
{
_width = width;
TextAlignment = UITextAlignment.Center;
Font = UIFont.PreferredTitle1;
TextColor = UIColor.White;
Lines = 999;
this.AddObserver("text", Foundation.NSKeyValueObservingOptions.Initial | Foundation.NSKeyValueObservingOptions.New, TextChanged);
}
private void TextChanged(Foundation.NSObservedChange change)
{
var s = change.NewValue as Foundation.NSString;
if (s != null) // s is always null here
{
var size = s.StringSize(UIFont.PreferredTitle1, new CGSize(_width - 20, 999), UILineBreakMode.CharacterWrap);
this.ResizeFrame(size.Width, size.Height);
}
}
}
我TextChanged
函數被調用,但change.NewValue
始終爲空。我正在使用Xamarin.iOS,但我確定在Objective-C或Swift中的答案是一樣的。
這工作。我甚至不知道我可以重寫屬性! – Darius