У меня есть uitableview, который реализует popover (PopoverView), когда ячейка прослушивается, а затем popover будет отключаться на любом другом крачке на экране. Проблема заключается в том, что если пользователь дважды будет кратковременно нажимать или нажимать на ячейку, это вызовет появление нескольких экземпляров popoverviews, а затем приложение сработает. Я ищу способ отключить двойное нажатие на ячейку и/или UITableView
вообще ИЛИ есть способ отложить касания на UITableViewCell
каких-либо идей?Отключить множественные ответвления на uitableviewcell
Я уже пробовал this, но это не работает в моем случае. Другой подход состоял бы в том, чтобы проверить, присутствует ли PopoverView, если это так, то не позволяйте другому создавать экземпляр. Я пробовал this и this, и оба не работают в моем случае.
Вот мой код, где я называю вид поповер на didSelectRowAtIndexpath
:
- (void)tableView:(UITableView *)TableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [TableView cellForRowAtIndexPath:indexPath];
sti = [[SelectedTeamsInfo alloc] init];
MyLeagueStandings *info = [fetchedResultsController objectAtIndexPath:indexPath];
[sti getAllScheduleForTeam:info.urlforteam];
NSString *title = info.teamname;
// If title length is greater then 32 truncate it to fit.
if (title.length > 32) {
title = [info.teamname substringToIndex:29];
title = [title stringByAppendingString:@"..."];
}
[PopoverView showPopoverAtPoint:cell.center inView:self.view withTitle:title withContentView:sti.view delegate:self];
}
РЕШЕНИЕ:
В классе интерфейса:
BOOL PopoverYN;
В классе реализации:
- (void)tableView:(UITableView *)TableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// If the popover is not available then display it else do nothing since one is already displayed.
if (PopoverYN == NO) {
PopoverYN = YES;
UITableViewCell *cell = [TableView cellForRowAtIndexPath:indexPath];
sti = [[SelectedTeamsInfo alloc] init];
MyLeagueStandings *info = [fetchedResultsController objectAtIndexPath:indexPath];
[sti getAllScheduleForTeam:info.urlforteam];
NSString *title = info.teamname;
// If title length is greater then 32 truncate it to fit.
if (title.length > 32) {
title = [info.teamname substringToIndex:29];
title = [title stringByAppendingString:@"..."];
}
[PopoverView showPopoverAtPoint:cell.center inView:self.view withTitle:title withContentView:sti.view delegate:self];
}
}
#pragma mark - popover methods.
- (void)popoverViewDidDismiss:(PopoverView *)popoverView;
{
PopoverYN = NO;
}
Это один из тех вопросов, на которые у меня возникают проблемы, потому что у меня так много ответов. вам нужно будет указать переменную, которую вызывает ваш popover, и игнорировать что-либо еще, пока вы не вернетесь. в основном, обертывание того, что находится в вашем методе didselectrowatIndexPath внутри оператора if, который проверяет BOOL, который вы сбросите, когда представление вернется. – rezand
Ваш комментарий был также очень полезен. – sudo
Рад это здесь и спасибо за отзыв. – rezand