NSTextFieldで改行をOptionキーを入力して無効にしますか?
-
06-09-2019 - |
質問
私は、デフォルトではオプション入力します(またはOptionリターン)を入力することで可能である私のNSTextFieldで改行文字を入力できないようにしたい。
私が見つけたものの一部の<のhref = "のhttp:// developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/TextEditing/Tasks/FieldEditor.html」のrel = "nofollowをnoreferrer">ページががの改行は、EMを<許可する方法を説明するを>なしはオプションの修飾子を使用する必要が、私はの完全の改行を無効にするための何かを見つけることができませんでした。
どのようにこれを行うことができますか?
解決
...改行をブロックする方法を
あなたはNSFormatterのサブクラスを作成し、isPartialStringValidを実装することができます。
- (BOOL)isPartialStringValid:(NSString **)partialStringPtr
proposedSelectedRange:(NSRangePointer)proposedSelRangePtr
originalString:(NSString *)origString
originalSelectedRange:(NSRange)origSelRange
errorDescription:(NSString **)error
{
// the user may have:
// -- deleted the left most character
// -- deleted the last character and we have an empty string
// both cases are valid
if (proposedSelRangePtr->location == 0)
return YES;
unichar theChar = [*partialStringPtr characterAtIndex:proposedSelRangePtr->location - 1];
if ([[NSCharacterSet newlineCharacterSet] characterIsMember:theChar]) {
*error = nil;
NSBeep();
return NO;
}
return YES;
}
他のヒント
この機能を無効にしたい理由は、
私が聞いてもいいですか?これは、OSのかなり標準的な部分です。ユーザーはうまく改行が含まれており、彼らはその後、彼らのニーズに編集します他の場所からいくつかの文字列に貼り付ける可能性があることに注意してください。おそらく、モデルにビューの外に値をコピーする時間あるときに改行した後、すべてを取り除くために無傷でこの機能を残すが、NSFormatterを使用する方が良いでしょうか?
所属していません StackOverflow