新しいテキストに合わせてサイズを変更できるように、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
は常にnullである:ここに私のコードです。私はXamarin.iOSを使用していますが、答えはObjective-CやSwiftでも同じです。
これは機能しました。私はプロパティを無効にすることができるかどうかわからなかった! – Darius