Как обнаружить нажатие на uiview с большим количеством элементов управления? - PullRequest
1 голос
/ 13 марта 2011

Моя проблема связана с обнаружением касания.

У меня есть контроллер uiview, и на uiview есть некоторые элементы управления (ярлыки, кнопки, просмотр таблицы, просмотр изображений и т. Д.)

Когда я нажимаю на uibutton, я отображаю небольшой uiview (200x150), если пользователь нажимает на uibutton в smallview, я скрываю smallview.

Но я не могу скрыть пользовательский интерфейс, если пользователь касается фона.
Я попробовал этот код ..

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    //NSLog(@"Touches began.");
    [self hideShareView];
}

Это не сработает, если я коснусь другой кнопки в представлении uiviewcontrols.

Я просто хочу, чтобы пользовательский интерфейс uiviewcontrol отреагировал первым.
Я думаю, что это о firstResponder, но я не знаю, как его установить первым.

edit: я хочу, чтобы он работал как uiPopover в ipad.

Ответы [ 3 ]

1 голос
/ 06 марта 2012

Я считаю, что правильным подходом является добавление нового прозрачного UIView при отображении вашего "smallview".Вы должны добавить UITapGestureRecognizer в этот UIView, чтобы активировать нужный селектор при обнаружении касания.Кроме того, вы должны убедиться, что представления организованы правильно, при этом ваше smallview - это то, которое находится сверху, прозрачный UIView - непосредственно под ним, а остальная часть иерархии представлений - ниже прозрачного UIView.

Наконец, вам следуетубедитесь, что вы удалили прозрачный UIView из вашей иерархии представлений одновременно с удалением smallview.

Имеет ли это смысл?

0 голосов
/ 18 октября 2012

попробуйте свои силы с bringing вашим small view (т. Е. Shareview) to front или отправьте свой главный вид за вашим маленьким представлением.

Если это все еще не работает & you don't want your main view to perform any action when smallview is opened, тогда попробуйте

[<YOUR_MAIN_VIEW> setUserInteractionEnabled:NO]; , но MAKE SURE вы можете делать это только тогда, когда вы не хотите, чтобы ваш основной вид выполнял какие-либо действия при открытии smallview

0 голосов
/ 13 марта 2011
...