OS X禁用NSTextView的引號替換

2021-07-16 04:24:27 字數 1886 閱讀 4737

4th,august,2016

在nstextview中輸入json的雙引號時,輸入法為英文,但顯示的是中文的引號。而且在輸入過程中能感覺到英文引號替換成中文引號。順便試了下nstextfield,不存在該問題。再試了下單引號也存在該問題,而!,@,#等字元不存在該問題。

猜測:是系統對引號做了特殊處理,在輸入引號的時候將輸入法更改為中文輸入法嗎?

於是按著這個思路去檢視了nstextview.h標頭檔案,查詢跟輸入法相關的api,並沒有找到。(r:這裡都不懂如何輸入關鍵字,typewriting?糾結啊)。

嘗試1:實在是不知從何入手,檢視了下nstextview中的api,嘗試了下重寫-inserttext,識別到輸入中文引號,就重寫成inserttext:@」\」「,但是其實在輸入英文引號的時候,inserttext識別的也是英文的引號。所以這種思路其實是不可行的,是在顯示時(inserttext後)則切換成中文引號了。

嘗試2: 在storyboard中,nstextview屬性smart quotes,智慧型引號預設是開啟的,嘗試了下禁用。但仍然沒有解決!難道是系統bug?

好吧,揭曉謎底的時候到了…

彎引號:「typographic, or curly quotation marks」

直引號:「neutral, vertical, straight, typewriter, or dumb quotation marks」,又叫dumb quotes傻瓜引號

直引號本是打字機時代為了盡量節約鍵盤空間而製作出來的。–from 《西文字型》

現代的鍵盤和 ascii 字符集都繼承了這個傳統——ascii 中只有乙個單直引號(u+0027 』 apostrophe)和乙個雙直引號(u+0022 」 quotation mark)。

主要是因為一些文字處理軟體(如 word),能自動將直引號轉換為彎引號–from 知乎-francis feng

許多編輯環境下(包括 os x 的預設系統設定)會根據上下文將直引號轉換為彎引號。中文輸入法也是普遍使用彎引號(主要其實是因為簡中彎引號佔一字寬並偏向內側,和比例寬度的直引號差別過大)。 –from 知乎-梁海

也是看了這個之後,大體明白了為什麼會從直引號切換成彎引號。大體是系統做了處理,根據上下文將直引號轉換為彎引號。然後再去google了smart quotes,於是看到這篇資料nstextview with smart quotes disabled, still replaces quotes。

反思: 其實一開始就有嘗試禁用smart quotes特性,無法禁用成功後,有常識去系統api中查詢該屬性,但搜尋關鍵字是smartquotes並未找到,也沒多想就錯過了解決問題的契機。還是應該靜下心慢慢的認真檢視系統api,以及搜尋關鍵字的技巧還需提高。

解決方案:將automaticquotesubstitutionenabled設為no,即可禁用引號的智慧型替換功能。(ps:storyboard中nstextview的smart quotes屬性對應的應該就是這一屬性,照理禁用後應該是不會智慧型替換。目前懷疑是xcode的問題[如若知曉,歡迎指正!])

也可通過enabledtextcheckingtypes將所有自動轉換型別禁用。

nstextview with smart quotes disabled, still replaces quotes

macosx: how to disable accented characters input

為什麼 ios 自帶的輸入法中的英文引號採用的是「」」

OSX 優化配置

sudo hostname macbookpro sudo scutil set hostname macbookpro sudo scutil set localhostname macbookpro進入你安裝macports的資料夾,比如官方的dmg裝出來的是 opt local etc mac...

執行OSX的手機

當然就是引得江湖 的蘋果了。若干 mac世界的老大前年就猜測蘋果下乙個殺手硬體該是手機。一時間應者雲集。畢竟人們和手機打交道的時間越來越長,花樣越來越多。蘋果稱雄設計 在美罕見 尤擅讓軟硬體協作,取長補短,採陰補陽,相映生輝,正該推出一款仇者痛親者快中間派紛紛投靠的絕殺產品。可是後來又謠傳今年的 m...

osx 常用defaults命令

defaults命令用來對mac os x系統進行某些設定。常用命令 檢視所使用的defaults命令 history grep defaults 分類檢視defaults命令 history grep defaults write history grep defaults delete 檢視關於...