2016-09-29 6 views
0

私のカスタムの内側UITableViewCell私はこのようなことをしています。例外は、 "フレーム"プロパティのKVCに準拠していないオブジェクトに送信されました

-(void)checkHeight 
{ 
    if (self.frame.size.height < self.expandedHeight) { 
     self.lblReasontitle.hidden=YES; 
    } 
    else 
    { 
     self.lblReasontitle.hidden=NO; 
    } 
} 
-(void)watchFrameChanges 
{ 
    if (!isObserving) { 

     [[NSNotificationCenter defaultCenter] addObserver:self forKeyPath:@"frame" options: (NSKeyValueObservingOptionNew |NSKeyValueObservingOptionInitial) context:nil]; 
     isObserving=true; 
    } 
} 
-(void)ignoreFrameChanges 
{ 
    if (isObserving) { 
     [[NSNotificationCenter defaultCenter] removeObserver:self forKeyPath:@"frame"]; 
    } 
} 
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context 
{ 
    if ([keyPath isEqualToString:@"frame"]) { 
     [self checkHeight]; 
    } 
} 

しかし、この例外が発生しています。キャッチされない例外によりNSUnknownKeyException、理由にアプリを終了

:[addObserver:forKeyPath:「フレーム」オプション@:5コンテキスト:0x0のは、「フレーム」プロパティのKVCに準拠していないオブジェクトに送られました。

私はその例外について何も知らないし、どうすれば解決できるのでしょうか。 助けてください。 ありがとう

答えて

0

UIKit要素は、既定ではKVOに準拠していません - 文書化されるまで。したがって、この例外が発生しています。フレームに関連する値を登録しようとするとうまくいくはずです。

+0

おかげでこのようなコードを交換してください。どうすれば登録できますか? – Irrd

+0

UIKit要素ではできません。あなたは、フレームの代わりに、良いことをやっている、それにいくつかの他のものを送信しようとします..likeフレームサイズなど – prabodhprakash

1

上記のコードから、1対1のコミュニケーションをしたいと思います。それがケースではKVOであり、NSNotificationではありません。

、答えを

-(void)checkHeight 
{ 
    if (self.frame.size.height < self.expandedHeight) { 
     self.lblReasontitle.hidden=YES; 
    } 
    else 
    { 
     self.lblReasontitle.hidden=NO; 
    } 
} 
-(void)watchFrameChanges 
{ 
    if (!isObserving) { 

     [self addObserver:self forKeyPath:@"frame" options: (NSKeyValueObservingOptionNew |NSKeyValueObservingOptionInitial) context:nil]; 
     isObserving=true; 
    } 
} 
-(void)ignoreFrameChanges 
{ 
    if (isObserving) { 
     [self removeObserver:self forKeyPath:@"frame"]; 
    } 
} 
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context 
{ 
    if ([keyPath isEqualToString:@"frame"]) { 
     [self checkHeight]; 
    } 
} 
関連する問題