2010-10-14 5 views
3

J'ai un UIButton défini dans un tableviewCellWithReuseIdentifier.UIButton hypersensible

Le bouton fonctionne mais il est très sensible. Si je tape juste sur le bouton cela fonctionne. Si vous appuyez longtemps dessus, l'action ne se déclenche pas, même si elle clignote pour indiquer qu'elle a été pressée. Pourquoi cela arrive-t-il? Plus important encore, comment puis-je le réparer.

Voici le code de l'UIButton dans la cellule.

CGRect rect = CGRectMake(190.0, 2.0, 40.0, ROW_HEIGHT); 
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[button setTag:LBUTTON_TAG]; 
[button setFrame:rect]; 
[button addTarget:self action:@selector(leftbutton:) forControlEvents:UIControlEventTouchUpInside]; 
[button setAlpha:0.5]; 
[cell addSubview:button]; 
+2

peut-être que ses sentiments lui ont fait mal à un jeune âge – Nimrod

+0

Etes-vous sûr que vous ne l'avez pas frappé trop fort? Les boutons peuvent être effrayés très facilement. Ou peut-être votre souris est trop grande et effrayante. Essayez de le changer pour un plus petit. –

+0

@Nimrod, vous étiez assez proche. C'était un changement que j'ai fait très tôt dans le code qui "blessait" ses sentiments. Merci dieu pour subversion. –

Répondre

1

Une vue longue, mais: avez-vous des processus d'arrière-plan asynchrones qui appellent [tableView reloadData] entre le tapotement et le tapotement? Cela pourrait provoquer la gestion du tap tap de UITableViewCell pour réinitialiser certaines données internes qui font «oublier» le tapotement à l'intérieur du bouton, ce qui pourrait empêcher l'événement UIControlEventTouchUpInside de se déclencher, car il ne se souvient pas du tapotement.

+0

Vous avez parfaitement raison. J'ai eu un NSTimer en cours d'exécution et dès que je l'ai éteint la vie était bonne. Merci! –

0

Peut-être parce que votre doigt se déplace légèrement pour UIScrollView (qui UITableView est une sous-classe) pense qu'il est un frein?

Essayez de définir tableView.canCancelContentTouches = NO.

+0

J'ai essayé cela, mais cela n'a pas fonctionné. Il fait la même chose dans le simulateur aussi. –