Разработка iPhone/iPod touch приложений: Отключение touch событий.
//Отключаем все события для view self.view.userInteractionEnabled = NO;
Либо создавал дополнительный прозрачный transparentView . Кстати, такой подход позволяет иногда добиться неплохих результатов, особенно, в случае, если данный transparentView не пустой, а полупрозрачный, и содержит, например, “крутяшку”, и текст “Loading…”.
UIView * transparentView = [[[UIView alloc]
initWithFrame:CGRectMake(0,0,320,480)] autorelease];
transparentView.userInteractionEnabled = YES;
//Иногда, если ставишь alpha == 0, не работает
transparentView.alpha = 0.01;
[self.view.window addSubview:transparentView];
И это еще не все. При желании для наших целей можно использовать перегрузку метода -(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent*)event
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
// метод должен возвращать самый "глубокий" view, но
// т.к. нам совсем не нужно, чтобы события обрабатывались
// всеми view'ами, то единственным, кто их будет обрабатывать
// будет текущий view(self)
return self;
}
Один способ лучше другого ;) Но, как оказалось, есть еще один, более простой способ запретить обработку ВСЕХ touch событий
// Выключаем обработку ВСЕХ touch событий [[UIApplication sharedApplication] beginIgnoringInteractionEvents]; // А теперь - включаем обратно [[UIApplication sharedApplication] endIgnoringInteractionEvents];
Непонятный exclusiveTouch
Должен немного еще сказать о свойстве UIView.exсlusiveTouch. Мне довелось некоторое время с ним помучаться. Так, если выходить из того, что написано в документации, то можно, якобы содать view, который будет единственным, кто будет принимать события во всем window. Однако не все так хорошо, как хотелось бы. На самом деле если выставить данное свойство в YES, то вы можете быть уверены лишь в том, что если в текущий момент этот UIView получает touch события, то больше ни один view в этом окне не сможет получать touch события. Вроде так. ;) Если кто-то думает иначе, то я буду рад услышать как все-таки обстоят дела с exсlusiveTouch. В любом случае, для задачи по отключению touch событий, это свойство мне не пригодилось.
Удачного программирования!















Евгений Дудник
в 10:22, 23.07.2009От меня небольшое уточнение.
На самом деле, когда блокируются все touch события методом
[[UIApplication sharedApplication] beginIgnoringInteractionEvents], инкрементируется счетчик блокирований. Поэтому нужно следить, чтобы метод [[UIApplication sharedApplication] endIgnoringInteractionEvents] вызывался столько же раз, сколько и beginIgnoringInteractionEvents.
Разработка iPhone/iPod touch приложений. Использования индикатора загрузки UIActivityIndicatorView. < Stanfy Блог
в 10:02, 26.05.2009[...] нажатий. Об этом уже писал Павел Тайкало в статье Разработка iPhone/iPod touch приложений: Отключение touch событи…. код наведен [...]