NSIndexSet не устанавливается, когда пользователь нажимает ввод после NSAlert
У меня есть очень простое приложение для Mac, которое в определенное время вызывает кнопку NSAlert с полем ввода. После этого я предпринимаю некоторые действия с NSTableView. Он работает нормально, если пользователь нажимает кнопку ОК, но если пользователь нажимает клавишу ВВОД, он не определяет выбранные строки
NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:@"Damage"];
[alert addButtonWithTitle:@"Ok"];
[alert addButtonWithTitle:@"Cancel"];
NSInteger damage = 0;
NSTextField *input = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 200, 24)];
[input setStringValue:@""];
[[alert window]setInitialFirstResponder:input];
[alert setAccessoryView:input];
NSInteger button = [alert runModal];
if (button == NSAlertFirstButtonReturn) {
damage = [input integerValue];
} else if (button == NSAlertSecondButtonReturn) {
}
//data
NSIndexSet *set = [self.tableView selectedRowIndexes];
NSUInteger index = [set lastIndex];
Индекс имеет значение NSNotFound.
Может ли кто-нибудь помочь исправить это? Tks
1 ответ
Решение
Итак, мне нужно было добавить ключ, эквивалентный ENTER, и это решило проблему:
NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:@"Damage/Heal"];
[alert addButtonWithTitle:@"Ok"];
[alert addButtonWithTitle:@"Cancel"];
NSInteger damage = 0;
NSTextField *input = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 200, 24)];
[input setStringValue:@""];
[[alert window]setInitialFirstResponder:input];
[alert setAccessoryView:input];
alert.buttons[0].keyEquivalent=@"\r";//new code
NSInteger button = [alert runModal];
if (button == NSAlertFirstButtonReturn) {
damage = [input integerValue];
} else if (button == NSAlertSecondButtonReturn) {
}