NSTextField에서 대문자를 강제로 사용할 수 있습니까?NSTextField (Cocoa)에서 모든 대문자를 강제로 입력하십시오.
포스트 코드를 입력 할 텍스트 필드를 만들고 모든 포스트 코드에 대문자를 사용하고 싶습니다.
N1 3ET 대신 : N1 3et
또한, 난 단지 자본을 받아들이는 정규 표현식 (I 정규 표현식에 대해 거의 알고, 그래서 그것을 수정에 대한 예리한 아니에요)
가 감사를 사용하고 있습니다!
마이클
NSTextField에서 대문자를 강제로 사용할 수 있습니까?NSTextField (Cocoa)에서 모든 대문자를 강제로 입력하십시오.
포스트 코드를 입력 할 텍스트 필드를 만들고 모든 포스트 코드에 대문자를 사용하고 싶습니다.
N1 3ET 대신 : N1 3et
또한, 난 단지 자본을 받아들이는 정규 표현식 (I 정규 표현식에 대해 거의 알고, 그래서 그것을 수정에 대한 예리한 아니에요)
가 감사를 사용하고 있습니다!
마이클
당신의 라인을 따라 뭔가로 NSTextField있는 delegate을 줄 수 :
- (void)controlTextDidChange:(NSNotification *)aNotification{
NSText *fieldEditor = [[aNotification userInfo] objectForKey:@"NSFieldEditor"];
[fieldEditor setString:[[fieldEditor string] uppercaseString]];
}
그것은 텍스트 변경 알림을 잡아 텍스트를 대문자로한다.
Anq의 대답은 잘 작동하지만 코코아 세계에서 이것은 NSFormatter을 위해 만들어졌습니다. 이는 거의 동일한 양의 작업이며 프로젝트 (또는 다른 프로젝트)의 일부로 쉽게 이식 할 수 있습니다.
Data Formatting Programming Guide For Cocoa도 참조하십시오.
- (void)controlTextDidChange:(NSNotification *)aNotification{
editField = [aNotification object];
NSString* value = [editField stringValue];
[editField setStringValue:[value uppercaseString]];
//NSLog(@"editField%@", editField.stringValue);
}
는보다 IB에 위임 할 스위프트
override func controlTextDidChange(obj: NSNotification!) {
//Make the username all caps to match the PM
var infoDictionary:Dictionary = obj.userInfo! as Dictionary
var text:NSText = infoDictionary["NSFieldEditor"] as NSText;
text.string = text.string.uppercaseString
}
후크 NStexfield에 Anq의 대답과 같은 일을 수행하는 방법이다. NSTextField있는 위양이 포함되어야입니다 클래스 :
override func controlTextDidChange(obj: NSNotification)
{
if let info = obj.userInfo, text = info["NSFieldEditor"] as? NSText,
string = text.string
{
text.string = string.uppercaseString
}
}
스위프트 솔루션 : 여기
나는 위의 솔루션을했다 문제는 제가 UI의 텍스트 필드를 변경했을 때, 커서가 문자열의 끝으로 이동 것입니다. 나는 1에서이
[VCOUVER]
내가 배치 할 내 커서 같은 텍스트 필드에 문자열을했다 그래서 만약 :
[V | COUVER]
와는 소문자 문자를 입력 'a'이면 다음과 같이됩니다.
[VACOUVER | ]
이 몰래, 나는 'N'을 입력하고 얻을 것이다 :
[VACOUVERN을 | 이다
-(void)controlTextDidChange:(NSNotification *)obj {
if([obj.object isEqualTo:self.locationTextField]) {
NSText *fieldEditor = [[obj userInfo] objectForKey:@"NSFieldEditor"];
NSRange rng = [fieldEditor selectedRange];
[fieldEditor setString:[[fieldEditor string] uppercaseString]];
[fieldEditor setSelectedRange:rng];
}
}
가, 대문자를 적용하기 전에, 커서의 위치를 잡아 대문자를 적용하고 다시 커서를 넣어 :]
쓰레기 ... OK, 여기 내 수정합니다.
텍스트 필드의 끝에서 편집 할 때만 작동하지만 커서가 텍스트의 중간에있는 경우에는 편집 할 수 없습니다. – Zaggo