hitTest, основанный на центре UISegmentmentedControl, возвращает UIToolbar - PullRequest
0 голосов
/ 07 августа 2011

Я экспериментирую с некоторым кодом, который исследует интерфейс, чтобы увидеть его структуру. В рамках этого я делаю hitTest для UISegmentedControl, который встроен в UIToolbar внизу экрана. У меня есть такая структура:

UIToolbar
    UISegmentedControl
        UISegment
        ...

Я получаю центр UISegmentedControl и проверяю его, как это:

UIView *view = // code which gets a reference to the UISegmentedControl.
frameInWindow = [view.window convertRect:view.frame fromView:view.superview];
CGPoint locationInWindow = CGPointMake(
                  frameInWindow.origin.x + 0.5 * frameInWindow.size.width,
                  frameInWindow.origin.y + 0.5 * frameInWindow.size.height);
UIView *target = [view.window hitTest:locationInWindow withEvent:nil];

Я проходил это много раз, и я не могу понять, почему он устанавливает target на UIToolbar вместо UISegmentedControl. Я бы ожидал, что целью будет такой же контроль. Или какой-нибудь UIView внутри сегментированного элемента управления.

1 Ответ

0 голосов
/ 07 августа 2011

В документах сказано:

"Этот метод игнорирует просмотр скрытых объектов, которые отключены взаимодействие с пользователем или альфа-уровень менее 0,01. Этот метод не учитывает содержимое представления при определении попадания. Таким образом, представление все еще может быть возвращено, даже если указанная точка находится в прозрачная часть содержимого этого представления. "

Включено ли взаимодействие пользователя с вашим сегментированным элементом управления?

...