我有一個NSTextView
和這裏的滾動條的正常大小:
這裏就是發生在我懸停的TextView的滾動條:
不過,我不希望有這樣的「擴大'效應。我怎樣才能刪除它?我試圖搜索如何執行此操作,但我找不到任何東西。我只是想要一直使用普通的卷軸大小(即更薄的大小),即使用戶使用它。這可能嗎?
謝謝如何在NSTextView的NSScrollView滾輪上禁用鼠標懸停展開效果?
回答
我建議子類NSScroller和覆蓋– drawArrow:highlight:
/– drawKnobSlotInRect:highlight:
/– drawKnob
方法,讓你有一個穩定的滾動條的外觀。
P.S.不要忘記在XIB文件中爲滾動條設置新的滾動條類。
UPDATE
下面是示例代碼:
- (void)drawKnob
{
// call the default implementation for Overlay Scrollers
if (self.scrollerStyle == NSScrollerStyleOverlay)
{
[super drawKnob];
return;
}
if (_style == NSScrollerKnobStyleLight || _style == NSScrollerKnobStyleDefault)
[[NSColor colorWithCalibratedWhite:1.0 alpha:0.8] setFill];
else [[NSColor colorWithCalibratedWhite:0 alpha:0.4] setFill];
// Note: you can specify the rect with fixed width here
NSRect knobRect = [self rectForPart:NSScrollerKnob];
// VERTICAL SCROLLER
NSInteger fullWidth = knobRect.size.width;
knobRect.size.width = round(knobRect.size.width/2);
knobRect.origin.x += (NSInteger)((fullWidth - knobRect.size.width)/2);
// draw...
NSBezierPath * thePath = [NSBezierPath bezierPath];
[thePath appendBezierPathWithRoundedRect:knobRect xRadius:4 yRadius:4];
[thePath fill];
}
//---------------------------------------------------------------
- (void)drawKnobSlotInRect:(NSRect)slotRect highlight:(BOOL)flag
{
// call the default implementation for Overlay Scrollers
// draw nothing for usual
if (self.scrollerStyle == NSScrollerStyleOverlay)
{
[super drawKnobSlotInRect:slotRect highlight:flag];
}
}
//---------------------------------------------------------------
- (void)drawArrow:(NSScrollerArrow)whichArrow highlight:(BOOL)flag
{
// call the default implementation for Overlay Scrollers
// draw nothing for usual
if (self.scrollerStyle == NSScrollerStyleOverlay)
{
[super drawArrow:whichArrow highlight:flag];
}
}
您能否更具體地在這些方法的內部做些什麼?我已經玩過這些方法,我有點了,但滾動只是不離開(鼠標)滾動條後隱藏 – 2013-05-14 17:08:52
我更新了我的答案與示例代碼。是的,非疊加滾動條不會隱藏,但始終存在。如果你想模擬iOS的滾動器行爲,也許你應該尋找像https://github.com/rheinfabrik/RFOverlayScrollView – UJey 2013-05-14 18:44:45
我不知道你想要什麼確切的風格,但這個類別可能會幫助你。
@implementation NSScrollView (SetScrollStyle)
- (void) setHidingScroll
{
[self setScrollerStyle:NSScrollerStyleOverlay];
[[self verticalScroller] setControlSize: NSSmallControlSize];
[[self verticalScroller] setKnobStyle:NSScrollerKnobStyleDark];
[self setScrollerKnobStyle:NSScrollerKnobStyleDark];
[[self verticalScroller] setScrollerStyle:NSScrollerStyleOverlay];
}
和使用
[scrollView setHidingScroll];
感謝您的回答,但是當我將鼠標懸停在滾動條上時,效果仍然存在 – 2013-05-13 09:52:48
- 1. 使用鼠標滾輪滾動不會觸發jQuery懸停或鼠標懸停
- 2. 在XCeed WinForms DataGrid上禁用鼠標懸停效果?
- 3. 鼠標懸停在地圖上效果
- 4. 鼠標懸停效果bug
- 5. 如何禁用密碼框懸停,聚焦,鼠標效果
- 6. 如何實現將鼠標懸停在圖像效果上?
- 7. 鼠標懸停時顯示效果並在鼠標懸停時顯示隱藏效果,如何?
- 8. jQuery的鼠標懸停效果錯誤,鼠標懸停事件總是在鼠標懸停觸發幾次
- 9. jQuery的鼠標懸停效果問題
- 10. Jquery複雜的鼠標懸停效果
- 11. 停止鼠標滾輪的持續效果
- 12. 如何禁用JScrollPane標題中鼠標滾輪的滾動?
- 13. 在銫中禁用鼠標滾輪
- 14. CSS禁用懸停效果
- 15. iframe禁用懸停效果
- 16. 對鼠標懸停沒有過渡效果,並用css鼠標懸停
- 17. 如何禁用Google街景上的鼠標滾輪縮放?
- 18. WPF ListView刪除鼠標懸停效果
- 19. 放大鼠標懸停效果
- 20. 對silverlight的鼠標懸停/懸停事件的淡化效果?
- 21. 如何在onclick上禁用鼠標懸停事件?
- 22. WPF在ListView上禁用鼠標滾輪滾動
- 23. 鼠標懸停在禁用按鈕
- 24. 如何在鼠標懸停效果添加在Word 2010插件
- 25. 如何禁用GtkOptionMenu/GtkComboBox中的滾動鼠標滾輪
- 26. jQuery的鼠標懸停/鼠標移開
- 27. 禁用QscrollArea上的鼠標滾輪滾動
- 28. 如何在GTK按鈕中防止鼠標懸停效果
- 29. Silverlight按鈕鼠標懸停喜歡懸停效果
- 30. 將鼠標懸停在鼠標上
你爲什麼要強迫你的用戶提供不斷所謂薄的iOS風格的滾動條,這是很難打,用鼠標指針亂動?!我真的希望這不是「美學」! – 2013-05-15 20:24:41