Мне интересно, как отследить прикосновения в любом месте экрана iPhone, и при этом кнопки UIB реагируют на нажатия.
Я создал подкласс UIView, сделал его полноэкранным и самым высоким в иерархии и переопределил его метод pointInside: withEvent. Если я верну ДА, я могу отследить касания в любом месте экрана, но кнопки не реагируют (вероятно, потому что представление инструктируется для обработки и прекращения касания). Если я возвращаю НЕТ, касание проходит через вид и кнопки реагируют, но я не могу отследить касания.
Нужно ли подкласс UIButton или это возможно через цепочку респондента? Что я делаю не так?
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
return NO;
}
//only works if pointInside:withEvent: returns YES.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"began");
[self.nextResponder touchesBegan:touches withEvent:event];
}
//only works if pointInside:withEvent: returns YES.
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"end");
[self.nextResponder touchesEnded:touches withEvent:event];
}