IOS UITableView обнаружение касания под таблицей - требует подклассов? - PullRequest
1 голос
/ 24 мая 2011

Я хотел бы иметь возможность определять, когда пользователь нажимает ниже последней строки моего UITableView, но без негативного влияния на возможность прокрутки таблицы.Есть ли более простой способ сделать это, чем создать подкласс UITableView (т. Е. Переопределить touchesBegan для таблицы)?

Причина, по которой я хотел бы сделать это: Когда таблица пуста (приложение открывается впервые) илитолько несколько ячеек, все это пространство на экране может быть использовано для вызова метода Add.

Я пытался использовать большой пользовательский UIButton без изображения (т.е. невидимый) в большом нижнем колонтитуле таблицы.Однако нажатие кнопки препятствует любой прокрутке, но вы хотите прокрутить, когда уже есть несколько ячеек.Я думаю, что смогу удалить кнопку из нижнего колонтитула, если в таблице будет больше нуля элементов, но это ничего не даст для меня, когда в таблице уже есть несколько элементов.

Спасибо залюбые идеи!

Ответы [ 2 ]

8 голосов
/ 31 мая 2011

Распознаватель жестов касания, установленный в нижнем колонтитуле tableView, справился со мной.Как было объявлено, он обнаруживает касание, но отлично передает другие жесты, такие как прокрутка, в UITableView.

//In viewDidLoad 
//configure footerView with gesture recognizer
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
                                            initWithTarget:self action:@selector(handleSingleTapOnFooter:)];
singleTap.numberOfTapsRequired = 1;
[self.footerView addGestureRecognizer:singleTap];
[singleTap release];
self.tableView.tableFooterView = self.footerView;

//Later on, implement the corresponding method
- (IBAction) handleSingleTapOnFooter: (UIGestureRecognizer *) sender {
    NSLog(@"The footer was tapped!");
    // code to add an entry to the table here
}

footerView - это UIView, который я создал в nib-файле моего контроллера представления и прикрепил кВыход UIView в контроллере представления.

Полагаю, лучшим решением было бы распознаватель жестов касания, установленный на самом UITableView, с кодом, определяющим, было ли местоположение касания после последней ячейки.Если я попытаюсь это сделать, я обновлюсь.

0 голосов
/ 24 мая 2011

Как насчет добавления UINavigationBar как tableHeaderView к вашему TableView?Кнопка справа на панели может быть кнопкой NEW.

UIBarButtonItem *newButton = [[UIBarButtonItem alloc] initWithTitle:@"NEW" style:UIBarButtonItemStyleDone target:self action:@selector(newEntry)];
UINavigationItem *navi = [[UINavigationItem alloc] init];
navi.title = @"my table title";
[navi setRightBarButtonItem:newButton];
UINavigationBar *bar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, widthOfMyTableview, heightOfRow)];
[bar setItems:[NSArray arrayWithObject:navi]];

...

myTableView.tableHeaderView = bar;
[newButton release];
[navi release];
[bar release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...