문제

Nstextfield에서 새 라인 캐릭터에 들어가는 것을 허용하지 않으려 고합니다. 기본적으로 옵션 엔터 (또는 옵션 리턴)를 입력하여 가능합니다.

내가 찾은 동안 약간 페이지 방법을 설명합니다 허용하다 라인 브레이크 없이 옵션 modifier를 사용해야한다면 아무것도 찾을 수 없었습니다. 비활성화 라인이 모두 끊어집니다.

이 작업은 어떻게 할 수 있습니까?

도움이 되었습니까?

해결책

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