Обнаружение Касания и Содержит в ячейках UITableView

Можно вставить в новой реализации для подруги. Таким образом, новая розетка может быть введена, не перекомпилировав Ваш код.

<bean id="jane" class="foo.bar.HotFemale">
  <property name="age" value="19"/>
</bean>
<bean id="mary" class="foo.bar.Female">
  <property name="age" value="23"/>
</bean>
<bean id="john" class="foo.bar.Male">
  <property name="girlfriend" ref="jane"/>
</bean>

(Вышеупомянутое принимает, Розетка и HotFemale реализуют тот же интерфейс GirlfFriend)

7
задан Josh Caswell 19 June 2017 в 12:41
поделиться

2 ответа

Вероятно, вам следует обработать событие UIControlTouchDown и, в зависимости от того, что вы подразумеваете под «удержанием», запустить NSTimer, который будет считать интервал с момента запуска касания и становятся недействительными при срабатывании или отпускании касания (события UIControlTouchUpInside и UIControlTouchUpOutside ). Когда срабатывает таймер, вы обнаруживаете "касание и удержание".

0
ответ дан 6 December 2019 в 08:44
поделиться

Вот код поднялся прямо из моего приложения. Вы должны добавить эти методы (и булевой член _canceltous) в класс, который вы получаете из UiableViewCell.

-(void) tapNHoldFired {
    self->_cancelTouches = YES;
   // DO WHATEVER YOU LIKE HERE!!!
}
-(void) cancelTapNHold {
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(tapNHoldFired) object:nil];
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    self->_cancelTouches = NO;
    [super touchesBegan:touches withEvent:event];
    [self performSelector:@selector(tapNHoldFired) withObject:nil afterDelay:.7];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [self cancelTapNHold];
    if (self->_cancelTouches)
        return;
    [super touchesEnded:touches withEvent:event];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    [self cancelTapNHold];
    [super touchesMoved:touches withEvent:event];
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
    [self cancelTapNHold];
    [super touchesCancelled:touches withEvent:event];
}
6
ответ дан 6 December 2019 в 08:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: