2015-02-04 5 views
0

настройки I мои взгляды, как это,Передача прикосновения от UIView к UITableView

+- MyView : UIView --------------------+ 
| A         | 
| +- MyTableView : UITableView -----+| 
| |         || 
| | B        || 
| |         || 
| +---------------------------------+| 
+--------------------------------------+ 

Я хочу, чтобы достичь следующих двух точек.

  1. Первоначально, когда пользователь начинает прокрутку MyTableView Я не хочу, чтобы прокрутить MyTableView (B на рисунке), а я хочу, чтобы переместить MyView (А на рисунке) в какой-то момент.

  2. После достижения определенного момента я хочу начать прокрутку MyTableView. На этом этапе таблица должна получить события касания, а супер-просмотр НЕ должен. Я хочу, чтобы это произошло, не поднимая прикосновения.

Я в состоянии достичь 1-й части, следуя код подкласса каждого ракурса в

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    if (_canReceiveTouches) 
     return YES; 
    return NO; 
} 

Где включить/отключить _canReceiveTouches, но я не в состоянии достичь 2-ой части без подъема прикосновение. Мне нужно поднять прикосновение к столу, получив следующее событие касания.

Может ли кто-нибудь дать мне несколько указателей, как этого достичь? Заранее спасибо.

ответ

0

Реализовать touchesMoved:WithEvent:

Внутри метода, получить место (CGPoint) от прикосновения с помощью:

CGPoint touchLocation = [touches anyObject] locationInView:self.view]; 

Затем сравните с Tableview в "верхней" у (ака origin.y). Вы можете получить это, используя:

CGFloat tableViewOriginY = CGRectGetMinY (self.tableview.frame);

Имейте условное утверждение, проверяющее, является ли «touchLocation.y» выше или равно «tableViewOriginY», после чего вы достигли нужной точки, и вы можете прокручивать таблицу.

+0

привет @joakim, спасибо за быстрый ответ. У меня уже есть логика, которую вы только что попросили меня реализовать. Единственная проблема здесь в том, что я не могу получить этот эффект «без поднятия пальца». Мне пришлось поднять свой палец, чтобы посмотреть на стол, чтобы коснуться события процесса. – bytescrafter

+0

Вместо «canReceiveTouches» вы можете попробовать использовать ту же логику с «scrollEnabled». Или комбинация из двух. – joakim

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