Подключить Rect к распознавателю жестов для панорамирования?

У меня есть нижний вид (UIView) и верхний вид (UIView). У bottomView красный фон, а в IB я установил для topView значение clearColor, а для Opaque — значение OFF. С помощью следующего кода я достигаю своей цели создания прямоугольника/окна в верхнем представлении и пробивания отверстия в нижнем представлении:

- (void)drawRect:(CGRect)rect
{
    // Drawing code
    CGRect holeRect = CGRectMake(100, 100, 100, 100);

    self.opaque = NO;
    self.backgroundColor = [UIColor clearColor];

    // Start by filling the area with the blue color
    [[UIColor blueColor] setFill];
    UIRectFill( rect );

    // Assume that there's an ivar somewhere called holeRect of type CGRect
    // We could just fill holeRect, but it's more efficient to only fill the
    // area we're being asked to draw.
    CGRect holeRectIntersection = CGRectIntersection( holeRect, rect );

    [[UIColor clearColor] setFill];
    UIRectFill( holeRectIntersection );
}

СЕЙЧАС - я хочу сделать прямоугольник/окно подвижным. Я установил ViewController как UIGestureRecognizerDelegate, а в файле реализации у меня есть следующий код в viewDidLoad, который работал у меня в другом проекте:

// создаем распознаватель жестов панорамирования для каждого ImageView UIPanGestureRecognizer *pan1Recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan1From:)];

// set self as delegate for gesture recognition
[pan1Recognizer setDelegate:self];

// setup the selector for the pan gesture
pan1Recognizer.minimumNumberOfTouches = 1;
pan1Recognizer.maximumNumberOfTouches = 1;

[XXX addGestureRecognizer:pan1Recognizer];

// ensure user interaction is ENABLED !!!!
[XXX setUserInteractionEnabled:YES];

Проблема в том, XXX выше. В другом моем проекте у меня было подпредставление в IB с определенным выходом, поэтому я мог явно ссылаться на него. Однако в этом проекте я создал прямоугольник в drawRect выше и не знаю, как установить это соединение.

Любая помощь приветствуется!


person Tony    schedule 23.02.2013    source источник


Ответы (2)


Создать

@property (nonatomic, strong) UIView *holerectView;

Затем установите вид на прямоугольный кадр:

 _rect = CGRectMake(100, 100, 100, 100);

self.opaque = NO;
self.backgroundColor = [UIColor clearColor];

Не беспокойтесь о заполнении прямоугольника цветом; Просто создайте цвет фона для вашего представления.

_holerectView = [[UIView  alloc] initWithFrame:_rect];
_holerectView.backgroundColor = [UIColor redColor];

[self addSubview:_holeRectView];

И здесь:

[_holeRectView addGestureRecognizer:pan1Recognizer];
person Morkrom    schedule 22.07.2013

Мне удалось выровнять Rect, который я создал, с UIView, который управлялся жестами, и решить эту проблему, переместив их вместе. Вероятно, не самый элегантный метод, но он работает, и я был в тупике на этом больше недели, так что наплевать на это и allons-y !

person Tony    schedule 24.02.2013