我正在试图监视和回应UIView框架原点的变化值.我的代码:
[cell.bottomView addObserver:self forKeyPath:@"frame.origin" options:NSKeyValueObservingOptionNew context:NULL];
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"%@ Changed", keyPath);
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息,我不明白:
An instance 0x7587d10 of class NSConcreteValue was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info:
<NSKeyValueObservationInfo 0x7587fd0> (
<NSKeyValueObservance 0x7587f70: Observer: 0x7587bd0, Key path: origin, Options: <New: YES, Old: …Run Code Online (Sandbox Code Playgroud) 最新更新:我创建了一个全新的项目,其构建方式与下面完全相同.然而,这个测试项目实际上工作得很好,即使它看起来是一样的...我注意到的一件事是破坏版本中的父视图控制器在-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event点击子视图控制器的视图时接收...在工作版本中,子视图控制器接收事件应该......就好像父视图阻止子视图或其他东西..?
进度更新:在拧了一下后,我发现直接将帧分配给子视图控制器时它可以正常工作.但是,我必须使用autolayout创建我的项目,这就是我所做的.出于某种原因,autolayout导致子视图控制器的视图无响应...
目前我有一个只有1个childviewcontroller的viewcontroller.childviewcontroller的视图显示得很好但我根本无法与childViewController进行交互.childViewController有几个UIButtons,但它们不响应点击.
我尝试在父视图控制器和子视图控制器中进行测试.
(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"Touched!");
}
Run Code Online (Sandbox Code Playgroud)
单击子视图控制器视图的框架时,此方法在父视图控制器中响应,但不在子视图控制器中响应.
子视图控制器在直接创建它并将其设置为应用程序委托中的根视图控制器时也可以正常工作.
我在父视图控制器中使用的代码:
(void) viewDidLoad
{
[super viewDidLoad];
self.detailPageVC = [[GoalDetailsPageViewController alloc] init];
[self.view addSubview:self.detailPageVC.view];
[self addChildViewController:self.detailPageVC];
[self.detailPageVC didMoveToParentViewController:self];
}
Run Code Online (Sandbox Code Playgroud)
感谢您帮助新手!:)
我已经使用autolayout几个星期了.目前,我正在使用名为FLKAutoLayout的第三方库,这使得该过程更容易.我正处于可以按照我想要的方式构建视图的地步,通常没有问题.然而,在过去4天的工作中,一旦参与了控制器,我就一直在努力进行自动布局.我对各种各样的UIViews很好......但出于某种原因,每个viewcontroller.view都是一个完全的恶魔.我只得到一个问题,让viewcontroller.view以我想要的方式调整大小,而更深层次的问题是,当使用autolayout时,子视图控制器的UIViews没有正确接收事件.子视图控制器在手动指定帧时工作得很好,但是一切都因autolayout而崩溃.
我不明白viewcontroller的UIView有什么不同之处让它与其他所有人不同......我的思绪正在沮丧地融化.ios是否在幕后或其他东西搞乱了我的viewcontroller视图?
示例图片http://i39.tinypic.com/6qeh3r.png
在图像中,红色区域属于子视图控制器.这个区域不应该超过最底部的子视图(表示三个的卡).这应该很简单,我可以通过一堆普通的UIViews使它工作得很好但是因为这是一个viewcontroller,一切都会破坏......
任何人都可以阐明我不知道的是什么.任何潜在问题的线索都非常感谢.
谢谢阅读.
更新:问题可能与模棱两可的约束有关
UIView *box = [[UIView alloc]init];
[box addSubview:imageView];
[box addSubview:nameLabel];
imageView constrainWidth:@"32" height:@"32"];
[imageView alignTop:@">=0" leading:@"0" bottom:@"<=0" trailing:@"<=0" toView:box];
[imageView alignCenterYWithView:box predicate:@"0"];
[nameLabel constrainLeadingSpaceToView:imageView predicate:@"5"];
[nameLabel alignTop:@">=0" leading:@">=0" bottom:@"<=0" trailing:@"<=0" toView:box];
[nameLabel alignCenterYWithView:box predicate:@"0"];
[self addSubview:box];
[box alignTop:@"5" leading:@"5" bottom:@"-5" trailing:@"-5" toView:self];
Run Code Online (Sandbox Code Playgroud)
上面的例子是一个模棱两可的布局,但我无法弄清楚它有什么问题......
viewcontroller ios autolayout childviewcontroller flkautolayout