【问题标题】:IOS UITableView frame change action not firing when I use auto layout constraint to update its frame height当我使用自动布局约束更新其框架高度时,IOS UITableView 框架更改操作未触发
【发布时间】:2015-05-04 04:02:00
【问题描述】:

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

我尝试了以下代码来观察变化,但它不起作用。

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

【问题讨论】:

    标签: ios objective-c uitableview frame


    【解决方案1】:

    我也尝试过一次以跟踪本机属性的变化。但我认为只有在通过setter方法设置属性时才会触发这种观察者。喜欢,

    self.myProperty = newValue;
    

    如果你使用,

    _myProperty = newValue;
    

    您的观察者不会在键值观察中获得任何变化。

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

    【讨论】:

    • 是的,我想是的,通过私有属性而不是 setter 方法更新帧值。我得到了一个钩子
    • 是的,我想是的,通过私有属性而不是 setter 方法更新帧值。我在更改约束的地方调用了一个钩子方法,它可以工作。但是,如果我自定义 tableview,我如何跟踪框架变化?
    • @JaxHuang 在您的情况下,expand the height constraint of the text input & emoji view 是 tableView frame 更改的相关事件,您绝对可以控制那里。在那里,您可以使用通知或委托触发其他事件以执行后续步骤。
    猜你喜欢
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多