2011-05-14 58 views
0

我爲我的textview創建了自定義滾動條(在scrollview的awakeFromNib方法中啓動它),現在我想讓用戶選擇是否要顯示滾動條在應用程序啓動。問題在於,即使在創建滾動條後立即隱藏滾動條,滾動條也會始終顯示,並將其設置爲滾動條的滾動條。奇怪的是,在觸發事件後嘗試隱藏滾動條(例如,通過單擊首選項中的複選框),滾動條會正確隱藏和顯示。我做錯了什麼?任何幫助表示讚賞!可可:在應用程序啓動時隱藏textview的自定義滾動條

回答

3

奇怪的是,添加自定義滾輪,滾動視圖之前,我必須使用setHasVerticalScroller:YES,否則我不能滾動使用兩個手指滾動手勢。然後,如果用戶不希望顯示滾動條,我必須在文檔的windowControllerDidLoadNib方法中使用setHasVerticalScroller:NO,在滾動視圖的awakeFromNib方法中添加滾動條之後使用它將不起作用。那麼,至少現在它似乎工作!

+0

唯一對我有用的東西。當不使用筆尖時,我已經在viewDidMoveToWindow方法中重置爲NO。 – svoisen 2013-03-01 00:49:53

0

我一直使用IB設置滾動條,然後用以下行,如果我想壓制他們中的一個:

[self.aScrollView setHasHorizontalScroller:NO]; // so only the vertical scrollbar is active 

嘗試使用awakeFromNib那行,後來將其設置爲YES,如果用戶選擇,而不是使用「隱藏」屬性。

P.S.在IB中添加的NSTextView始終嵌入在NSScrollView中,它是滾動視圖,用於控制滾動條。因此,如果上述不工作,嘗試在你的TextView的上海華調用setHasWhateverScroller:

[[[aTextView superview] superview] setHasHorizontalScroller:NO]; 

如果你得到一個「無法識別的選擇」的錯誤,然後嘗試明確鑄造上海華向NSScrollView(這將工作僅當在上海華真NSScrollView的一個實例):

[(NSScrollView *)[[aTextView superview] superview] setHasHorizontalScroller:NO]; 
+0

非常感謝您的回答,但這並不能解決我的問題。問題是,使用setHasVerticalScroller隱藏滾動條後(是的,我只使用垂直滾動條,我不需要水平滾動條),我甚至不能使用觸控板滾動,所以滾動的唯一方法是移動鍵盤閃爍的光標,這不應該發生。我認爲解決這個問題的唯一方法是隱藏滾動條,所以它仍然存在,但沒有被看到。 – Nickkk 2011-05-15 10:47:13

+0

哦,所以你想通過觸控板滾動工作,只是隱藏每個用戶pref滾動條本身。你說這是一個自定義的滾動器,但是你在awakeFromNib中啓動它,所以你必須在一個nib中使用滾動視圖。您可以嘗試使用滾動視圖的IB設置進行播放,如「自動隱藏滾動條」。或者,如果你實際上不使用nib/xib,你應該使用viewDidLoad,而不是awakeFromNib - 可能是這個問題。 – Wienke 2011-05-16 00:16:41

+1

奇怪的是,在將自定義滾動條添加到滾動視圖之前,我必須使用'setHasVerticalScroller:YES',否則我無法使用雙指滾動手勢進行滾動。然後,如果用戶不希望顯示滾動條,我必須在文檔的windowControllerDidLoadNib方法中使用'setHasVerticalScroller:NO',在滾動視圖的'awakeFromNib'方法中添加滾動條後使用它' 。那麼,至少現在它似乎工作! – Nickkk 2011-06-25 10:41:45

相關問題