iMa*_*din 1 objective-c uilabel uipangesturerecognizer
我在将UILabel的文本设置为手势速度时,仅使用UIPanGestureRecognizer转换视图时遇到问题。
我已经成功地用这样的平移手势转换了视图(在IB的帮助下):
- (IBAction)handleGesture:(UIPanGestureRecognizer *)sender
{
CGPoint translation = [sender translationInView:self.view];
sender.view.center = CGPointMake(sender.view.center.x + translation.x, sender.view.center.y + translation.y);
[sender setTranslation:CGPointMake(0, 0) inView:self.view];
}
Run Code Online (Sandbox Code Playgroud)
但是,当我在此方法中添加以下行时,视图停止平移,但UILabel随速度更新:
self.myLabel.text = [NSString stringWithFormat:@"%@", [NSNumber numberWithInt:[sender velocityInView:self.roundShape].y]];
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
基本上,您从“平移手势识别器”获得的转换值是相对值。相对于手势开始识别触摸的起点。因此,您要抓住手势开始的原始点,然后将转换应用于该点,而不是视图的当前位置。
- (void)gestureDidTranslate:(UIPanGestureRecognizer *)panGesture
{
if([panGesture state] == UIGestureRecognizerStateBegan){
self.originalPoint = self.movingView.center;
}
CGPoint translation = [panGesture translationInView:self.view];
self.movingView.center = CGPointMake(self.originalPoint.x+translation.x, self.originalPoint.y+translation.y);
self.label.text = NSStringFromCGPoint([panGesture velocityInView:self.view]);
}
Run Code Online (Sandbox Code Playgroud)
我想不出您想在识别器将识别器的转换值归零的时候。
| 归档时间: |
|
| 查看次数: |
1765 次 |
| 最近记录: |