メインメニューを開く

差分

Xamarin.MacでNSTextViewのスマートクォートを無効化する

407 バイト追加, 2019年5月22日 (水) 05:11
== 概要 ==
NSTextViewのスマートクォートを無効化したい。
 
[[Xamarin.Mac]]で開発している社内アプリの設定画面に、アプリ起動時に実行する[[AppleScript]]を入力する欄をNSTextViewで作ったわけだが、ここにクォートを入力するとスマートクオートが発動して実行できないAppleScriptに勝手に置き換えられてしまう[[不具合]]が発生した。
 
たとえば以下のようなAppleScriptのダブルクォート部分がダメになる。
<source lang="applescript">
tell application "Safari"
activate
end tell
</source>
== 解決策:OSレベルで無効化する ==
== 解決策:NSTextView単位で無効化する ==
OSレベルでの解決方法が確実なのだろうが今から社内にある500台くらいの[[Xamarin.Mac]]で開発している社内アプリの設定画面に、アプリ起動時に実行する[[AppleScript]]を入力する欄をNSTextViewで作ったわけだが、ここにクォートを入力するとスマートクオートが発動して実行できないAppleScriptに勝手に置き換えられてしまう[[不具合]]が発生した。に設定して回るとか正気の沙汰とは思えないので自動アップデートを搭載したアプリ単位で解決したい。
XIBファイルを開きNSTextViewの設定項目を眺めているとスマートクォート関連の設定があったわけだが、なぜかこのチェックを付けても外しても無効化できない。古い[[Mac OS X]]では動くようだが最近のやつはダメなようだ。
// disable Smart Quotes
// よくわからんのでAutomaticで始まるプロパティ全部にfalseを設定してみた
_startupScript_nsTextView.AutomaticDashSubstitutionEnabled = false; _startupScript_nsTextView.AutomaticDataDetectionEnabled = false; _startupScript_nsTextView.AutomaticLinkDetectionEnabled = false; _startupScript_nsTextView.AutomaticQuoteSubstitutionEnabled = false; _startupScript_nsTextView.AutomaticSpellingCorrectionEnabled = false; _startupScript_nsTextView.AutomaticTextReplacementEnabled = false; _startupScript_nsTextView.EnabledTextCheckingTypes = 0;
}
}
匿名利用者