- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个自动重复的 NSStepper
,当我收到特定的 NSNotification
时,我想停止跟踪。
一个想法是从接收通知的方法发送[_stepper setAutorepeat: NO]
。那是行不通的。我认为步进器仅在跟踪开始时检查自动重复标志。
然后我想我可以子类化 NSStepperCell
,并使用 -[NSCell continueTracking:at:inView:]
的覆盖来中止跟踪。但是,显然,当步进器在鼠标不移动的情况下自动重复时,不会调用该方法。
我需要完全重写trackMouse:inRect:ofView:untilMouseUp:
吗?我想,当鼠标移入或移出时,我必须处理步进器的突出显示部分,而且我没有看到任何公共(public) API 来找出突出显示的部分。
最佳答案
我最终发布了一个鼠标松开事件。我将 NSStepperCell
子类化,作为观察通知和发布事件的便捷位置。
@interface AbortableStepperCell : NSStepperCell
{
BOOL _isTracking;
BOOL _isObserverInstalled;
}
@implementation AbortableStepperCell
- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver: self];
[super dealloc];
}
- (BOOL)startTrackingAt: (NSPoint) startPoint
inView: (NSView *) controlView
{
_isTracking = YES;
if ( ! _isObserverInstalled )
{
[[NSNotificationCenter defaultCenter]
addObserver: self
selector: @selector(abortTracking:)
name: @"AbortMouseTracking"
object: nil];
_isObserverInstalled = YES;
}
return [super startTrackingAt: startPoint inView: controlView];
}
- (void) abortTracking: (NSNotification*) note
{
if (_isTracking)
{
NSWindow* myWindow = self.controlView.window;
NSGraphicsContext* gc =
[NSGraphicsContext graphicsContextWithWindow: myWindow];
NSEvent* upEvent = [NSEvent
mouseEventWithType: NSLeftMouseUp
location: NSZeroPoint
modifierFlags: 0
timestamp: 0.0
windowNumber: myWindow.windowNumber
context: gc
eventNumber: 0
clickCount: 1
pressure: 0.0f ];
if (upEvent)
{
[NSApp postEvent: upEvent atStart: YES];
}
}
}
- (void)stopTracking:(NSPoint)lastPoint
at:(NSPoint)stopPoint
inView:(NSView *)controlView
mouseIsUp:(BOOL)flag
{
_isTracking = NO;
[super stopTracking: lastPoint
at: stopPoint
inView: controlView
mouseIsUp: flag];
}
@end
关于macos - 如何中止 NSStepper 自动重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35785942/
是否有人有一种解决方法,可以使用 NSStepper 控件(事实上,很多......),将增量设置为 0.1 或除整数值以外的任何值,而无需调用 setIncrement: 在每个 NSStepper
我有一个自动重复的 NSStepper,当我收到特定的 NSNotification 时,我想停止跟踪。 一个想法是从接收通知的方法发送[_stepper setAutorepeat: NO]。那是行
我正在使用 NSStepper 和 NSTextField。用户可以使用文本字段设置值,也可以使用 NSStepper 更改值。我将使用下面的示例引用我的问题: 假设我的步进器的当前值为 4,步进器的
我遇到了与将 NSStepper 与 NSTextField 集成中所述相同的初始问题: I need to have a NSTextField working with a NSStepper a
给定一个已经设置了最小值/值/最大值的 NSStepper,如果我将最小值设置为 value 和最大值之间的值,NSStepper 的值会改变吗? 我知道我可以尝试一下,但这只能告诉我当前的操作系统,
我想重新绘制这两个控件,但我找不到方法,任何人都可以给我想法吗? 我发现有些应用程序重新绘制了这些控件,你可以看一下截图。第一个是NSStepper,第二个是NSTabView,NSTabViewIt
在 IB 中,您可以为 NSStepper 配置最小值和最大值,但是...如果我不想用最大值限制用户怎么办?我可以做吗?怎么办? 最佳答案 计算机中没有“没有最大值”的东西。每个属性都有其自己的数据类
我需要有一个 NSTextField 与 NSStepper 一起作为一个控件,以便我可以通过直接在文本字段上更改整数值或使用步进器向上/向下箭头来编辑整数值。 在 IB 中,我添加了这两个控件,然后
我在基于 View 的 TableView 中使用常规(非子类)NSTableCellView。它具有初始图像和文本字段 View 。我在 View 中添加了一个 NSStepper。 文本字段绑定(
我是一名优秀的程序员,十分优秀!