Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS UITableView帧更改操作在使用“自动布局约束”更新其帧高度时未触发_Ios_Objective C_Uitableview_Frame - Fatal编程技术网

IOS UITableView帧更改操作在使用“自动布局约束”更新其帧高度时未触发

IOS UITableView帧更改操作在使用“自动布局约束”更新其帧高度时未触发,ios,objective-c,uitableview,frame,Ios,Objective C,Uitableview,Frame,我正在做一些关于聊天室的事情;我使用uitableview显示聊天历史记录,并将uiview作为文本输入和表情符号的容器。uitableview对文本输入和表情视图的约束为0;当我展开文本输入和表情视图的高度约束时,uitableview的框架会更新,但代码中不会触发更改操作 我尝试了以下代码来观察更改,但它不起作用 -(void)didChangeValueForKey:(NSString *)key -(void)willChangeValueForKey:(NSString *)key [

我正在做一些关于聊天室的事情;我使用uitableview显示聊天历史记录,并将uiview作为文本输入和表情符号的容器。uitableview对文本输入和表情视图的约束为0;当我展开文本输入和表情视图的高度约束时,uitableview的框架会更新,但代码中不会触发更改操作

我尝试了以下代码来观察更改,但它不起作用

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

我还试过一次跟踪本机属性的更改。但我认为只有当通过setter方法设置属性时,才会触发这种观察者。像

如果你使用

_myProperty = newValue;
您的观察者不会在关键值中得到任何更改


对于像tableView这样的本机元素,我们不知道内部实现。要跟踪更改,您必须自定义tableView。

是的,我认为是这样,通过私有属性而不是setter方法更新帧值。我得到了一个钩子是的,我想是的,通过私有属性而不是setter方法更新帧值。我在更改约束的地方调用了一个钩子方法,它就起作用了。但是,如果我自定义tableview,我如何跟踪帧的变化呢?@JaxHuang在您的例子中扩展文本输入的高度约束&emoji视图是tableview帧变化的相关事件,您肯定有控制权。在那里,您可以使用通知或委托触发其他事件以执行后续步骤。
_myProperty = newValue;