Странное поведение - выбрал касание строки, не отвечающее для UITableViewCell - PullRequest
3 голосов
/ 30 марта 2012

У меня очень странная проблема, я не знаю, неудобно ли это нормальному поведению клеток или нет, кажется, что это так! Поэтому я отдаю это кому-то, кто может ответить, извиниться, если глупо задавать этот вопрос. Обычно, когда мы прикасаемся к ячейке табличного представления, происходит то, что она переходит к контроллеру представления / контроллеру, который закодирован. Теперь, что странно, это то, что он не отвечает на выбор или не касается. Я проверил, разрешено ли выделение во время редактирования в IB или нет. Я выбрал его, теперь поворот заключается в том, что когда я касаюсь ячейки табличного представления, он не отвечает, вместо этого, когда я провожу его горизонтально / когда я нажимаю долго Ячейка, которая перемещается, действительно удивлена ​​этому странному поведению! Я не понимаю причину, по которой мне нужно провести по экрану, чтобы сделать выбор ячейки в табличном представлении. Это также происходит с кнопкой, представленной под табличным представлением!

Я искал проблемы, схожие с моим делом, но нашел только один вопрос , там было предложено проверить этот метод,

-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath

Но я вообще не реализовывал этот метод, у меня фактически есть панель вкладок с несколькими элементами, где у меня есть контроллер с именем AddController для доступа к нескольким атрибутам и строкам и т. Д., Объявленным в контроллере, я подклассы это следующим образом:

@interface ViewController : AddController

Теперь, потому что это было указано в вопросе, который я видел, т.е. ссылку, которую я дал, чтобы проверить, копируете ли вы один и тот же код на странице контроллера подкласса, я говорил о подклассах и о том, что я сделал, надеюсь, что каждый это понимает!

Может ли кто-нибудь подсказать мне, как выйти из этой проблемы и заставить ячейку табличного представления реагировать на обычные прикосновения, любая помощь очень ценится!

Спасибо всем заранее :)

Ответы [ 3 ]

5 голосов
/ 22 мая 2012

После некоторого исследования я почти уверен, что именно UITapGestureRecognizer в tableView вызвало у вас проблему. Если бы вы были похожи на меня с текстовым полем в ячейке и использованием UITapGestureRecognizer для закрытия клавиатуры, вот мое решение:

В представлении, которое вы реализовали UITextFieldDelegate

(в моем случае у меня есть пользовательский UITableViewCell с именем TextFieldCell),

Объявите UITapGestureRecognizer как свойство:

@interface TextFieldCell : UITableViewCell <UITextFieldDelegate>
{
    UITextField *theTextField;
    UITapGestureRecognizer *gestureRecognizer;
}
@property (nonatomic,retain) UITextField *theTextField;
@property (nonatomic,retain) UITapGestureRecognizer *gestureRecognizer; 

И инициализируйте его на ваш взгляд:

self.gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeKeyboard:)];

В методе - (void)textFieldDidBeginEditing:(UITextField *)textField используйте superView, чтобы перейти к вашему tableView, и вызовите addGestureRecognizer:

[self.superview.superview addGestureRecognizer:gestureRecognizer];

А в - (void)textFieldDidEndEditing:(UITextField *)textField просто удалите распознаватель жестов:

[self.superview.superview removeGestureRecognizer:gestureRecognizer];

Это полностью решит проблему.

2 голосов
/ 22 мая 2012

Использовали ли вы UITapGestureRecognizer для вашего tableView? У меня была точно такая же проблема, как и у вас сегодня, и затем я понял, что это распознаватель жестов, который размывает мое намерение выбрать строку, нажав. Когда я его удалил, tableView вернулся в нормальное состояние.

Надеюсь, это поможет.

0 голосов
/ 22 марта 2014

У меня была такая же проблема, и я решил ее, поставив галочку "Прокрутка включена" в атрибутах табличного представления.

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

...