2015-05-04 48 views
1

我正在做一些關於聊天室的事情;我使用uitableview來顯示聊天記錄,並使用uiview作爲文本輸入的容器&表情符號。 uitableview有約束0底部到文字輸入&表情符號視圖;當我展開文本輸入&表情視圖的高度約束時,將更新uitableview的框架,但更改操作未在代碼中觸發。當我使用自動佈局約束來更新其幀高時,IOS UITableView幀更改操作不會觸發

我曾嘗試下面的代碼,觀察變化,但它不工作。

-(void)didChangeValueForKey:(NSString *)key 
-(void)willChangeValueForKey:(NSString *)key 
[_tableView.layer addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionNew context:nil\]; 

回答

0

我也試過這一次跟蹤原生屬性的變化。但我認爲只有當屬性通過設置方法設置時,纔會觸發此觀察者。像,

self.myProperty = newValue; 

如果使用,

_myProperty = newValue; 

您的觀察者不會得到在鍵 - 值觀察任何變化。

對於像tableView這樣的本地元素,我們不知道內部實現。要跟蹤更改,您必須自定義您的tableView

+0

是的,我認爲是的,更新幀值通過私有屬性不是setter方法。我得到一個鉤子 –

+0

是的,我認爲是這樣,更新幀值通過私有屬性而不是setter方法。我得到一個鉤子方法在我改變約束的地方被調用,它工作。但如何我可以跟蹤幀更改,如果我自定義tableview? –

+0

@JaxHuang在你的案例中'擴展文本輸入和表情視圖的高度約束'是tableView'frame'變化的相關事件,並且你肯定有控制權。在那裏,您可以使用通知或委託來觸發其他事件以執行後續步驟。 –

相關問題