我发现一个解决方案就是打电话:
[[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate: [NSDate date]];
每当我收到UIGestureRecognizerStateChanged事件.这样,每次完成时,绘图都会在屏幕上呈现.但是仍然存在一个“事件滞后”的问题,其中一系列捏合事件排队等待,这样即使在我停止捏住屏幕之后,图像也会在尺寸上保持缩放.
我的问题是,是否有一种方法可以“刷新”排队的夹点事件,所以每当我得到一个UIGestureRecognizerStateChanged事件时,我都可以进行慢速绘制 *** 作,然后刷新所有其他夹点事件,这样只有最新的一个会被处理.任何人都知道这是否可行?我想我可以构建一个查看UIGestureRecognizerStateChanged事件时间的系统,并抛出与最近重绘相近的事件,但这似乎是一个黑客攻击.
- (voID) handleGlobalPinchGesture:(UIPinchGestureRecognizer*)_pinchGesture{ if ( _pinchGesture.state == UIGestureRecognizerStateBegan ) { // stuff return; } if ( _pinchGesture.state == UIGestureRecognizerStateEnded || _pinchGesture.state == UIGestureRecognizerStateCancelled ) { // end stuff return; } if (_pinchGesture.state == UIGestureRecognizerStateChanged ) { doslowRedrawingOperationHere(); }}解决方法 我不认为,这是手势识别器的问题,我在移动转换后的视图方面遇到了同样的问题.我已经解决了它,通过添加查看drawRect方法,并在更改视图中心之前调用 – (voID)setNeedsdisplay方法:
在视图中:
- (voID)drawRect:(CGRect)rect{ [super drawRect:rect];}
在手势识别器的动作中:
[CATransaction begin];[CATransaction setValue:@(YES) forKey:kCATransactiondisableActions];_destinationIndicatorVIEw.center = center;[self.frameVIEw setNeedsdisplay];self.frameVIEw.center = center;[CATransaction commit];
这个对我有用.
总结以上是内存溢出为你收集整理的ios7 – 我可以’刷新’UIGestureRecognizer事件吗?全部内容,希望文章能够帮你解决ios7 – 我可以’刷新’UIGestureRecognizer事件吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)