MessageBox в iOS
Автор: Alexey Doz.....
Некоторым программистам под 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
Комментарии [5]