Управление перетаскиванием с помощью счетчика в iPhone - PullRequest
0 голосов
/ 25 августа 2011

У меня есть пользовательский класс кнопок. Я хочу иметь возможность управлять этой кнопкой посредством количества нажатий .. Когда пользователь нажимает только один раз, кнопка выскакивает в окне комментария. Когда пользователь нажимает дважды или нажимает один раз иудерживайте кнопку более 2 секунд, кнопка начнет перетаскиваться. Я добавил эти строки в свой пользовательский класс кнопок для перехвата событий перетаскивания.

[self addTarget:self action:@selector(dragBegan:withEvent:) forControlEvents: UIControlEventTouchDown];
[self addTarget:self action:@selector(dragMoving:withEvent:) forControlEvents: UIControlEventTouchDragInside];
[self addTarget:self action:@selector(dragEnded:withEvent:) forControlEvents: UIControlEventTouchUpInside | UIControlEventTouchUpOutside];


-(void)dragBegan:(UIControl *)c withEvent:ev {
[delegate customDragBegan:c withEvent:ev];

Я попробовал эту функцию:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

};

Но когда касание заканчивается, dragEnds не сработает .. Я немного запутался ..

На данный момент я могу правильно перетаскивать кнопки .. Просто нужно выяснить, как управлять этимпервая попытка ... 2 касания перетащите, 1 коснитесь другой функции ..

Заранее спасибо ..

1 Ответ

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

Я нашел решение: (немного новичок, но это решает мою проблему)
Я использую события касания. Когда начинается касание, я проверяю количество касаний. Если оно равно 2, тогда я вызываю пользовательскую функцию перетаскивания своих делегатов. И устанавливаю для isDraggable BOOL значение Да. Я должен вызвать пользовательскую функцию перетаскивания в делегате ..

Я надеюсь, что это будет полезно для таких, как я ..

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

UITouch *touchSample = [[event allTouches] anyObject];
switch ([touchSample tapCount]) {
    case 1:
        isDraggable = NO;
        NSLog(@"SHOW COMMENT");
        break;
    case 2:
        isDraggable = YES;
        NSLog(@"START DRAG");
        [delegate customDragBegan:self withEvent:event];
        break;   
    default:

        break;
}


};
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
if (isDraggable) {
    [delegate customDragMoving:self withEvent:event];
};


};

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

if (isDraggable) {
    [delegate customDragEnded:self withEvent:event];
};

};
...