Советы по тестированию существования подпредставлений - PullRequest
0 голосов
/ 29 декабря 2010


Я бы попросил у вас совета.:) У меня есть два представления, которые содержат много подпредставлений (на самом деле это кнопки)
И я должен проверить свои прикосновения UITapGestureRecognizer, чтобы запретить его при касании кнопки.Мой код работает очень хорошо.Но не очень круто переписывать все подпредставления для их тестирования.

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{
    if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) {
        // Disallow tapRecognizer for btn touched
        return !(touch.view == _categoriesBtn || // DISALLOW CATEGORIES BOTTOM MENU AND ITS BUTTONS
                 touch.view == _categories1Btn ||
                 touch.view == _categories2Btn ||
                 touch.view == _categories3Btn ||
                 touch.view == _myMenuView || // DISALLOW RIGHT MENU AND ITS BUTTONS
                 touch.view == _myMenuView.menu1Btn ||
                 touch.view == _myMenuView.menu2Btn ||
                 touch.view == _myMenuView.menu3Btn ||
                 touch.view == _myMenuView.menu4Btn ||
                 touch.view == _myMenuView.menu5Btn ||
                 touch.view == _myMenuView.menu6Btn ||
                 touch.view == _myMenuView.menu7Btn);
    }
    return YES;
}

С уважением,
KL94

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Как насчет определения набора:

NSSet *views=[NSSet setWithObjects:  _categoriesBtn,  _categories1Btn, /*list your views here*/ ,nil];

Тогда протестируйте вот так

  if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) {
        // Disallow tapRecognizer for btn touched
        return ![views containsObject:touch.view]
  }
1 голос
/ 29 декабря 2010

Если у вас есть указатель на представление, содержащее все кнопки, вы можете использовать этот код, чтобы увидеть, находится ли нажатие на кнопке в этом представлении.

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    UIView *sview; //This is the superview containing the buttons
    if([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]])
        return !([touch.view isKindOfClass:[UIButton class]] && [touch.view isDescendentOfView:sview]);
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...