Objective-C의 키보드에서 입력을 읽는 방법
-
08-07-2019 - |
문제
안녕하세요 저는 키보드에서 입력을받는 프로그램을 만들고 있으며 키보드에서 입력 할 수있는 방법이 있는지 궁금합니다. NSString
물체.
해결책
당신이 이것을 명령 줄 앱으로하고 있다면, 지난 주에 내가 쓴 코드는 명령 프롬프트에서 줄을 얻습니다 (나는 그것을 만들었습니다. NSString
범주):
+ (NSString *) stringFromStandardInDelimitedByCharactersInSet:(NSCharacterSet *)delimiters {
NSMutableString * string = [NSMutableString string];
unichar input = '\0';
while (input = getchar()) {
if ([delimiters characterIsMember:input]) { break; }
[string appendFormat:@"%C", input];
}
return string;
}
그런 다음 다음과 같이 사용할 것입니다.
NSString * input = [NSString stringFromStandardInDelimitedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
getchar ()는 일반 숯 만 반환하기 때문에 유니 코드 문자를 잘 처리하지 않습니다 (UNICHAR 사용에도 불구하고). 그러나 기본 명령 줄 텍스트 항목의 경우 꽤 잘 작동합니다. 그러나 이것이 실행 된 스레드를 차단할 것이라는 경고를받습니다 (getchar ()가 차단 호출이기 때문에).
다른 팁
- (id)init {
if( !(self = [super init]) ){
return nil;
}
void (^monitorHandler)(NSEvent *);
monitorHandler = ^(NSEvent *theEvent){
switch ([theEvent keyCode]) {
case 123: // Left arrow
NSLog(@"Left behind.");
break;
case 124: // Right arrow
NSLog(@"Right as always!");
break;
case 125: // Down arrow
NSLog(@"Downward is Heavenward");
break;
case 126: // Up arrow
NSLog(@"Up, up, and away!");
break;
default:
break;
}
};
// Creates an object we do not own, but must keep track
// of so that it can be "removed" when we're done
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSKeyDownMask) handler:monitorHandler];
return self;
}
왜 이거 그렇지 않습니까?
NSFileHandle *kbd = [NSFileHandle fileHandleWithStandardInput];
NSData *inputData = [kbd availableData];
NSString *option = [[NSString alloc] initWithData:inputData encoding:NSUTF8StringEncoding];
제휴하지 않습니다 StackOverflow