我不知道如何更好地将其作为标题,但我需要制作一个可作为普通音量旋钮使用的NSSlider.此刻,当我按住鼠标并将其移动到控件周围时,它会旋转很多次.我需要它停在“0”位置和“100”位置,当我向另一个方向拖动时,我不能让它从0跳到100.我希望我明白这一点.有谁知道怎么做或有任何建议? 最佳答案 一个老问题,但无论如何我们去了:
(1)将滑块设置为100个刻度线
(2)选择“仅停留在刻度线”
(3)在Interface Builder中,将自定义单元类设置为SBCustomSliderCell
使用以下代码:
@interface SBCustomSliderCell()
@property CGFloat lastSliderValue;
@end
@implementation SBCustomSliderCell
- (void)awakeFromNib
{
self.lastSliderValue = -1;
}
- (double)closestTickMarkValueToValue:(double)value
{
double proposedValue = [super closestTickMarkValueToValue:value];
if (self.lastSliderValue == -1)
{
self.lastSliderValue = proposedValue;
return proposedValue;
}
double MAX_JUMP = 50;
double tickDifference = ABS(self.lastSliderValue - proposedValue);
BOOL isTurningUp = proposedValue > self.lastSliderValue;
if (tickDifference > MAX_JUMP)
{
proposedValue = isTurningUp ? 0.0 : self.maxValue;
}
NSLog(@"value: %.2f gap: %.2f", proposedValue, tickDifference);
self.lastSliderValue = proposedValue;
return proposedValue;
}
- (NSRect)rectOfTickMarkAtIndex:(NSInteger)index
{
return NSZeroRect;
}
@end