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) {

}
Другие вопросы по тегам