質問

私は、デフォルトではオプション入力します(または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を使用する方が良いでしょうか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top