2012-06-25 2 views
2

У меня есть два UIButton в ячейках таблицы, которые неудобно нажимают при прокрутке. Как я могу это предотвратить?Предотвращение пресса UIButton при прокрутке

Есть ли какое-либо свойство или отправленное событие, которое я могу установить, чтобы кнопка нажата только тогда, когда пользователь отпускает нажатие, а не сразу после нажатия кнопки?

Я играл с различными событиями касания (Touch Up Inside и Touch Down), и ни одна из них не решила эту проблему.

ответ

3

Вы можете прослушивать скроллинг делегатов обратных вызовов в Tableview и выключите ваши кнопки они время прокручивается

- (void)scrollViewWillBeginDragging:(UIScrollView *)activeScrollView { 

    //I assume the buttons are within your cells so you will have to enable them within your cells so you will probably have to handle this by sending a custom message to your cells or accessing them with properties. 
    [yourButton setEnabled: NO]; 
} 

и слушать

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
{ 
    // do the same to enable them back 
    [yourButton setEnabled: YES]; 
} 
+1

Это работает, если нажать на кнопку, когда вы уже прокруткой. Реальная проблема, с которой я столкнулась, - это если вы запускаете жестом прокрутки над кнопкой, она запускает кнопку, даже если вы отпускаете ее за пределами кнопки. – mnort9

0

В интерфейсе строителя изменить значения тегов кнопок для число больше 10 (или некоторое значение). Подкласс UIScrollView и переопределения:

-(BOOL) touchesShouldCancelInContentView:(UIView *)view { 

if(view.tag>10) { 
    NSLog(@"should A"); 
    return YES; 
} else return NO; 

}

Ваш Scrollview должен иметь набор свойство canCancelContentTouches Да и delaysContentTouches набор для NO

Смежные вопросы