gpt4 book ai didi

objective-c - 在自定义 NSSegmentedCell 中绘制 "pressed"状态

转载 作者:行者123 更新时间:2023-12-03 17:54:41 24 4
gpt4 key购买 nike

我正在使用 BGHUDSegmentedCell 的一个版本来绘制 HUD 样式的分段控件 (NSSegmentedControl)。

但是,当用户单击某个段时,我看不到任何方法可以将单元格绘制为“按下”状态(以便用户获得正确的跟踪反馈)。默认的 NSSegmentedControl/Cell 管理这个,所以大概有一种方法,虽然是系统代码,但谁知道它是否是公共(public)方法。

子类覆盖:

- (void)drawWithFrame:(NSRect)frame inView:(NSView *)view {
- (void)drawSegment:(NSInteger)segment inFrame:(NSRect)frame withView:(NSView *)view {

NSSegmentedCell 中是否有任何方法可以确定它正在绘制处于“按下”状态的段,从而在跟踪期间正确显示它?

最佳答案

您最好通过重写 NSCell 的鼠标跟踪方法来实现自己的按下/按下状态跟踪。

- (BOOL)startTrackingAt:(NSPoint)startPoint inView:(NSView *)controlView;
- (void)stopTracking:(NSPoint)lastPoint at:(NSPoint)stopPoint inView:(NSView *)controlView mouseIsUp:(BOOL)flag;
- (BOOL)continueTracking:(NSPoint)lastPoint at:(NSPoint)currentPoint inView:(NSView *)controlView;

-(CGFloat)widthForSegment:(NSInteger)segment; 结合使用的可能足以确定鼠标被按下的部分,然后适本地渲染。

关于objective-c - 在自定义 NSSegmentedCell 中绘制 "pressed"状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15333977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com