У меня есть приложение для iPad, в котором у меня есть контроллер вида, который является UIGestureRecognizerDelegate для ряда UIGestureRecognizers. Я осуществил следующий метод UIGestureRecognizerDelegate:iPad. UIBarButtonItem имеет недокументированное представление типа UIToolbarTextButton. А?
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
// Double tapping anywhere on the screen hides/shows the toolbar
if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]] == YES) {
if (touch.tapCount == 2) {
self.toolbar.hidden = self.toolbar.isHidden ? NO : YES;
} // if (touch.tapCount == 2)
} // if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]] == YES)
// All gestures are ignored unless they happen on the fullscreen EAGLView
if ([touch.view isKindOfClass:[EAGLView class]] == NO) {
return NO;
} // if ([touch.view isKindOfClass:[EAGLView class]] == NO)
return YES;
}
Моя установка является полноэкранным EAGLView с UIToolbar на вершине EAGLView. На панели инструментов есть UIBarButtonItem. Идея здесь заключается в том, что двойное нажатие позволяет переключать внешний вид панели инструментов. Все остальные жесты должны встречаться в EAGLView.
Моя проблема заключается в том, что краны непосредственно на UIBarButtonItem показывают touch.view как подкласс UIView UIToolbarTextButton, который недокументирован и не может быть интродуцирован.
Да?
Может кто-нибудь предложить работу вокруг, желательно, что использует интроспективную доброту какой-либо формы?
Спасибо,
Doug
Спасибо,
Doug
Великие умы думают одинаково ;-). Да, я действительно пришел к этому решению. Немного взломанный, но кажется, что он надежный и действительно работает. Я все еще озадачен, почему кнопка не раскрывает общедоступный вид. У меня создалось впечатление, что все видимое - это какой-то вкус UIView. Нет? – dugla
@dugla: Потому что Apple не хочет, чтобы люди путались с содержимым UIToolbar напрямую, я думаю. – kennytm