Я должен был определить, касался ли пользователь экрана iPhone.Итак, я создал класс с именем «CustomApplication» в своем проекте (подкласс UIApplication), а затем изменил свой main.m, чтобы он выглядел так:
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, @"CustomApplication",nil);
[pool release];
return retVal;
Этот класс «CustomApplication.m» содержит методследующим образом:
- (void)sendEvent:(UIEvent *)event {
[super sendEvent:event];
[MyUtility showAlertWithTitle:@"Alert!!!!" message:@"Session Expired!!!!"]; // showing an alert here
}
Метод showAlertWithTitle выглядит следующим образом:
+ (void) showAlertWithTitle:(NSString *)aTitle message:(NSString *)aMessage
{
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:aTitle message:aMessage delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show]; // Line causing problem in iOS 5 - base sdk 5.0
[alertView release];
}
Все работает нормально в iOS 4.2, но на iOS 5.0 происходит сбой приложенияпри касании экрана (когда вызывается метод sendEvent: событие).Когда я отладил код, я обнаружил, что проблема в [alertView show];линия.В iOS 5 происходит, когда эта конкретная строка ([alertView show];) выполняется, она снова вызывает метод sendEvent в CustomApplication, и этот метод вызывает showAlertWithTitle: метод MyUtility, который, в свою очередь, снова вызывает метод sendEvent и, следовательно, кодвходит в бесконечный цикл.Я не знаю решение.Если кто-то сталкивался с этой утомленной вещью, то, пожалуйста, скажите мне, что я должен написать, чтобы при получении оповещения метод sendEvent не вызывался?