gpt4 book ai didi

ios - setNeedsDisplay 在 block 内不起作用

转载 作者:可可西里 更新时间:2023-11-01 03:27:03 24 4
gpt4 key购买 nike

我正在使用 CMMotionManager 来检索加速度计数据。问题是加速度计数据会定期打印,实例变量会在 View 中更改,但不会重绘 View 。我已经检查过 hv 不是 nil 并且所有内容都已 Hook 。 block 内调用setNeedsDisplay有问题吗?

-(void) viewDidAppear:(BOOL) animated
{
[super viewDidAppear: animated];

[motionManager startAccelerometerUpdatesToQueue:motionQueue withHandler:
^(CMAccelerometerData *accelerometerData, NSError *error)
{

NSLog(@"%@",accelerometerData);

HypnosisView *hv = (HypnosisView *) [self view];

hv.xShift = 10.0 * accelerometerData.acceleration.x;
hv.yShift = -10.0 * accelerometerData.acceleration.y;

[hv setNeedsDisplay];

}];
}

最佳答案

这是因为您在与主线程不同的线程上调用了 UI 方法。

将此添加到您的 block 中:

dispatch_async(dispatch_get_main_queue(), ^{
[hv setNeedsDisplay];
});

请记住,任何处理用户界面元素的方法都必须从主线程调用。

关于ios - setNeedsDisplay 在 block 内不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8313246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com