Как назначить представление первым респондентом после касания ячейки табличного представления? - PullRequest
0 голосов
/ 30 марта 2012

Вот дополнительная информация о моем расположении ... У меня есть табличное представление, которое, когда вы касаетесь ячейки в табличном представлении, добавляет в окно пользовательское представление с именем DraggableView в той же самой позиции, что и выбранная строка табличного представления, итот же размер.

РЕДАКТИРОВАТЬ: Вот как я добавил в представление подпредставление DraggableView.Этот код находится в пользовательском классе tableviewcell:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UIView *topmostView = [[[super superview] superview] superview];
    UITableView *parentTableView = (UITableView *)[self superview];

    CGPoint draggablePoint = parentTableView.frame.origin;
    CGSize draggableSize = parentTableView.frame.size;
    draggablePoint.y += indexPath.row * 44;

    dragView.frame = CGRectMake(draggablePoint.x, draggablePoint.y, draggableSize.width, 44);
   [topmostView addSubview:dragView];
}

Это перетаскиваемое представление сделано таким образом, что оно перетаскивается.На назначенном инициализаторе он добавляет UIPanGestureRecognizer к представлению, чтобы вы могли перемещаться по нему.Я делаю это так:

- (void) activatePan {

UIPanGestureRecognizer *pan = 
[[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panMove:)] autorelease];
[self addGestureRecognizer:pan];
}

- (void) panMove:(UIPanGestureRecognizer*)recognizer {    
CGPoint touchLocation;

if (recognizer.state == UIGestureRecognizerStateBegan) {
    currentFrame = self.frame;

    touchLocation = [recognizer locationInView:self];
}

CGPoint translatedPoint = [(UIPanGestureRecognizer*)recognizer translationInView:self];

//The object is being moved across the screen
self.frame = CGRectMake(currentFrame.origin.x + translatedPoint.x, currentFrame.origin.y + translatedPoint.y, currentFrame.size.width, currentFrame.size.height);
}

Мне нужно, чтобы этот недавно созданный Draggable View имел фокус пользователя, когда его палец все еще находится в верхней части ряда.Это для перетаскиваемого вида, который можно перетаскивать после его создания.
Что происходит сейчас, так это то, что перетаскиваемый вид создан, но я должен отпустить палец и коснуться перетаскиваемого вида, чтобы панорамировать его.Я хочу пропустить шаг освобождения пальца и коснуться вида, чтобы я мог перетащить его, как только он будет создан.Есть идеи?

1 Ответ

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

Из документации Apple:

- (BOOL)becomeFirstResponder

"Вы можете вызвать этот метод, чтобы сделать объект респондента, такой как представление, первым респондентом. Однако вы должны вызывать его только в том представлении, если оно является частью иерархии представления. Если свойство окна представления содержит объект UIWindow , он был установлен в иерархии представлений; если он возвращает nil, представление отсоединяется от любой иерархии. "

...