Ios 变量的值会像在循环中一样增加
编辑:对不起,我发现了问题,这是另一个类中发生的问题,这里没有。感谢所有考虑过这个问题的人。 原件: 这可能是我忽略的一个noob程序员元素,但我有一个变量的值在增加,就像在循环中一样,我不希望它增加 我有一个可以放大的波形,还有一个编辑控件,我想和波形一起放大。因此,您可以放大波形,从而也可以缩放或扩展控制 所以我在波形上设置了一个收缩手势识别器。波形由样本组成。我从一开始就为零的开始放大的样本中减去在挤压过程中发生的放大样本。然后我将这些除以波形的总样本,乘以100,瞧,你得到了控制的一侧的百分比,在这种情况下,左侧应该移动 这是我的密码Ios 变量的值会像在循环中一样增加,ios,objective-c,uipinchgesturerecognizer,Ios,Objective C,Uipinchgesturerecognizer,编辑:对不起,我发现了问题,这是另一个类中发生的问题,这里没有。感谢所有考虑过这个问题的人。 原件: 这可能是我忽略的一个noob程序员元素,但我有一个变量的值在增加,就像在循环中一样,我不希望它增加 我有一个可以放大的波形,还有一个编辑控件,我想和波形一起放大。因此,您可以放大波形,从而也可以缩放或扩展控制 所以我在波形上设置了一个收缩手势识别器。波形由样本组成。我从一开始就为零的开始放大的样本中减去在挤压过程中发生的放大样本。然后我将这些除以波形的总样本,乘以100,瞧,你得到了控制的一侧的
- (void)handleWaveformPinchGesture:(UIPinchGestureRecognizer *)recognizer {
if (recognizer.state ==UIGestureRecognizerStateBegan) {
startingSamples = self.waveform.zoomStartSamples;
originalLeft = trimControl.leftValue;
}
if (recognizer.state == UIGestureRecognizerStateChanged) {
float newSamples = self.waveform.zoomStartSamples;
trimControl.leftValue = (startingSamples - newSamples)*100/self.waveform.totalSamples + originalLeft;
NSLog(@"starting sampels are %f and newSamples are %f and originalLeft is %f", startingSamples, newSamples, originalLeft);
NSLog(@"Left = %f, right = %f", trimControl.leftValue, trimControl.rightValue);
[self.trimControl setNeedsLayout];
}
}
问题是,每次我放大时,原始的左值(类似于float的startingSamples)会自行增长。这是NSLog,经过编辑以显示出现新夹点的点
starting sampels are 0.000000 and newSamples are 0.000000 and originalLeft is 3.864734
Left = 4.908213, right = 127.000000
starting sampels are 0.000000 and newSamples are 0.000000 and originalLeft is 6.280193
Left = 7.975845, right = 127.000000
starting sampels are 0.000000 and newSamples are 0.000000 and originalLeft is 8.454106
Left = 10.736715, right = 127.000000
您可以看到,尽管startingSamples和newSamples都是0,但originalLeft会自行增长。我能做些什么来阻止这一切
谢谢。当UIgestureRecognitizer状态发生更改时,您正在设置trimControl.leftValue,然后在按压手势结束时不重置。当您开始挤压originalLeft=trimControl.leftValue;将设置为上次挤压时设置的leftValue。这就是它增长的原因。我想你想在挤压结束时将其重置为零。让我知道这是否有效