NSAlert может использоваться для создания плавающего окна?

Тахир был почти прав в своем ответе, правильный SQL-запрос должен быть

String sql = "SELECT * FROM  user where userName LIKE ?";

, а затем вам нужно добавить % подстановочные знаки в параметр «вручную», т.е.

String queryString = "%" + userSearch + "%";
ps.setString(1, queryString);
8
задан Kristopher Johnson 20 April 2009 в 00:26
поделиться

2 ответа

Я ломал голову над это точно так же некоторое время назад.

Единственный способ, которым я мог заставить это работать (вроде), - это создать подкласс NSApplication и переопределить -sendEvent. В -sendEvent вы сначала вызываете реализацию super, а затем делаете что-то вроде этого:

id *modalWindow = [self modalWindow];
if (modalWindow && [modalWindow level] != MY_DESIRED_MODAL_WINDOW_LEVEL)
    [modalWindow setLevel: MY_DESIRED_MODAL_WINDOW_LEVEL];

Кроме того, даже это не было работать безупречно - при переключении приложений - вы никогда не захотите делать это в любом случае, потому что это явный, грубый взлом.

Так что да, к сожалению, вам лучше написать свою собственную версию NSAlert. Если вам действительно небезразлична эта возможность, я бы оповестил об этом. Довольно странно, что [[окно оповещения] setLevel: someLevel] не соблюдается NSApplication, и это пустая трата времени, чтобы пересобрать NSAlert со всеми его аккуратными небольшими функциями автоматической разметки, чтобы иметь возможность сделать это.

5
ответ дан 5 December 2019 в 21:22
поделиться

Я закончил тем, что отказался от NSAlert , и вместо этого я загружаю бдительное NSWindow из NIB.

Вот код, который отображает окно:

- (void)showAlert {
    NSWindow *w = [self window];
    [w makeFirstResponder:nil];
    [w setLevel:NSFloatingWindowLevel];
    [w center];
    [w makeKeyAndOrderFront:self];
}

Это предназначена для того, чтобы заставить его действовать как предупреждение, за исключением того, что оно также плавает и не является модальным, поэтому пункты меню могут быть выбраны, пока оно включено.

Что-нибудь еще, что я должен был сделать?

2
ответ дан 5 December 2019 в 21:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: