iPhone: Создание игр для iOS (iPhone и iPad)
GameDev.ru / Сообщества / iPhone / Статьи / MessageBox в iOS

MessageBox в iOS

Автор:

Некоторым программистам под iOS не хватает модального сообщения как MessageBox() в WinAPI. UIAlertView подобную возможность может предоставить путем использования private API (property BOOL runsModal), но существует и «легальный» метод. Для этого требуется всего лишь создать класс-потомок от UIAlertView и переопределить метод -(void)show;

- (void)show {
    [super show];
    while(self.visible) {
        CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.02, TRUE);
    }
}

Данный код создает второй цикл обработки сообщений, который будет работать пока диалоговое окно отображается на экране.

Развивая мысль дальше, можно сделать что-то подобное:

@interface iOSMessageBox : UIAlertView<UIAlertViewDelegate> {
}

@property (nonatomic, assign) NSInteger returnValue;
- (NSInteger)showModal;

@end

@implementation iOSMessageBox

@synthesize returnValue = _returnValue;

- (NSInteger)showModal {
    [super show];
    while(self.visible) {
        CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.02, TRUE);
    }
    return self.returnValue;
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    self.returnValue = buttonIndex;
}

@end

31 марта 2011

#iOS, #подсказки

Комментарии:
0r@ngEУчастникwww1 апр. 20110:12#1
А за вот это отдельное огромное спасибо! Давно хотел чего-то подобного.
kvakvsПостоялецwww1 апр. 20114:06#2
Как один из тех несчастных, кому пришлось по долгу службы столкнуться с программированием яблок, и кто пытался вывести этот самый меседж бокс, посылаю лучи ненависти в отдел разработки ябло-ос, разрази их джобс ;)
SergioУдалёнwww1 апр. 20118:19#3
Чем не устраивает UIAlertViewDelegate? Конечно мороки больше, но в целом ничего страшного нет.
LeshikПостоялецwww1 апр. 201110:49#4
В моем случае нужен был  int MessageBox(const char*, const char*);
SergioУдалёнwww1 апр. 201110:53#5
В любом случае - спасибо за подсказку!

/ Форум / iPhone: Создание игр / Программирование

Тема в архиве.

2001—2018 © GameDev.ru — Разработка игр