我制作了一个像这样的 UIPanRecognizer。
- (void)pan:(UIPanGestureRecognizer *)gesture
{
if ((gesture.state == UIGestureRecognizerStateChanged) ||
(gesture.state == UIGestureRecognizerStateEnded)) {
CGPoint translation = [gesture translationInView:self];
self.origin = CGPointMake(
self.origin.x+translation.x,self.origin.y+translation.y);
[gesture setTranslation:CGPointZero inView:self];
}
但是我的 View 永远不会被重绘,这意味着......我的drawRect不会被再次调用。有人尝试过这个吗?
在我的 viewController 中我有这个
UIGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self.graphView action:@selector(pan:)];
[self.graphView addGestureRecognizer:pan];
[self updateUI];
我的更新UI是
- (void)updateUI { [self.graphView setNeedsDisplay]; }
最佳答案
当您将手势识别器附加到 View 时,您正在调用 updateUI
方法。您应该在回调方法 pan:
中执行此操作。
此外,您正在泄漏内存。将 UIGestureRecognizer
分配并添加到 View 后,您应该release
它。
关于objective-c - UIPanRecognizer 不起作用。我的观点从未重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7538799/