kann nicht auf UIButton, die in eine Zelle in UITableview
gesucht und bereits einige mögliche Korrekturen aber alle nicht gelöst mine.
ich halten Sie durch klicken auf die Zelle in der uitableview, anstatt die Tasten drin.
hier ist mein code:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.backgroundColor = [UIColor blackColor];
UIView *v = nil;
NSArray *array = [cell subviews];
for (v in array) {
NSLog(@"%@",[v class]);
if( [v isKindOfClass:[UIView class]] ){
[v removeFromSuperview];
}
}
//tb
if (tableView == self.tb) {
v = [[UIView alloc] initWithFrame: CGRectMake(0, 0, self.tb.bounds.size.width, 120.0)];
if([feeds count]>0){
UIImageView *box=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"statusBox.png"]];
box.userInteractionEnabled = YES;
[v addSubview:box];
AsyncImageView *imageView1 = [[AsyncImageView alloc] initWithFrame:CGRectMake(10, 20.0f, 34.0f, 34.0f)];
imageView1.contentMode = UIViewContentModeScaleAspectFill;
imageView1.clipsToBounds = YES;
//cancel loading previous image for cell
[[AsyncImageLoader sharedLoader] cancelLoadingImagesForTarget:imageView1];
if (users1 != nil && users1.imagelink != nil && (id) users1.imagelink != [NSNull null]){
imageView1.imageURL = [NSURL URLWithString:users1.imagelink];
}
else{
imageView1.image=[UIImage imageNamed:@"default_ProfilePic.png"];
}
UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myFunction:)];
tapped.numberOfTapsRequired = 1;
[imageView1 addGestureRecognizer:tapped];
[tapped release];
imageView1.userInteractionEnabled = NO;
[v addSubview:imageView1];
UIFont *font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:11];
UILabel *descLabel1 = [[UILabel alloc] initWithFrame: CGRectMake(52, 23, 160, 48)];
descLabel1.text = [NSString stringWithFormat:@"%@ %@",users1.userfirstn,users1.userlastn];
descLabel1.textColor = [UIColor blackColor];
descLabel1.font = font;
descLabel1.adjustsFontSizeToFitWidth=YES;
descLabel1.numberOfLines = 0;
CGSize expectedLabelSize = [descLabel1.text sizeWithFont:descLabel1.font
constrainedToSize:descLabel1.frame.size
lineBreakMode:UILineBreakModeWordWrap];
CGRect newFrame = descLabel1.frame;
newFrame.size.height = expectedLabelSize.height;
descLabel1.frame = newFrame;
descLabel1.numberOfLines = 0;
descLabel1.userInteractionEnabled = NO;
[v addSubview:descLabel1];
UILabel *descLabel2= [[UILabel alloc] initWithFrame: CGRectMake(52, 43, 200, 48)];
StatusClass *stat1=[feeds objectAtIndex:indexPath.row];
descLabel2.text = [stat1 statcreate];
descLabel2.textColor = [UIColor blackColor];
descLabel2.font = font;
descLabel2.adjustsFontSizeToFitWidth=YES;
descLabel2.numberOfLines = 0;
CGSize expectedLabelSize2 = [descLabel2.text sizeWithFont:descLabel2.font
constrainedToSize:descLabel2.frame.size
lineBreakMode:UILineBreakModeWordWrap];
CGRect newFrame2 = descLabel2.frame;
newFrame2.size.height = expectedLabelSize2.height;
descLabel2.frame = newFrame2;
descLabel2.numberOfLines = 0;
descLabel2.userInteractionEnabled = NO;
[v addSubview:descLabel2];
UILabel *descLabel3= [[UILabel alloc] initWithFrame: CGRectMake(10, 63, 280, 80)];
StatusClass *stat=[feeds objectAtIndex:indexPath.row];
descLabel3.text = [stat stattext];
descLabel3.textColor = [UIColor blackColor];
descLabel3.font = font;
descLabel3.adjustsFontSizeToFitWidth=YES;
descLabel3.numberOfLines = 0;
descLabel3.userInteractionEnabled = NO;
[v addSubview:descLabel3];
//comment button
UIButton *buttonC = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[buttonC addTarget:self action:@selector(sendComment:) forControlEvents:UIControlEventTouchUpInside];
[buttonC setImage:[UIImage imageNamed:@"comment.png"] forState:UIControlStateNormal];
buttonC.frame = CGRectMake(2, 160, 145, 35);
buttonC.userInteractionEnabled = YES;
[v addSubview:buttonC];
//share button
UIButton *buttonS = [UIButton buttonWithType:UIButtonTypeRoundedRect];
buttonS.tag = indexPath.row;
[buttonS addTarget:self action:@selector(sendShare:) forControlEvents:UIControlEventTouchUpInside];
[buttonS setImage:[UIImage imageNamed:@"share.png"] forState:UIControlStateNormal];
buttonS.frame = CGRectMake(150, 160, 140, 35);
buttonS.userInteractionEnabled = YES;
[v addSubview:buttonS];
}
v.userInteractionEnabled = YES;
[cell addSubview:v];
}
return cell;
}
Ich habe auch versucht, die UITapGestureRecognizer
für die Tasten und immer noch nicht funktioniert.
Dank.
- die Auswahl style auf none
- Ich Frage mich nur, dass die Schaltfläche " y-Versatz gegeben ist als 160 und Ihre Meinung zu v-die Höhe beträgt 120. So, wie Sie in der Lage, um zu sehen, den button?
- GUTE AUGEN.... danke. habe nicht bemerkt, dass man. deshalb ist es nicht anklickbar, weil es nicht in der Ansicht. seine arbeiten fein jetzt
- Kommentar Hinzugefügt als Antwort..
- Ich Laufe in die gleiche situation ein paar mal pro Projekt. Wenn es nicht funktioniert wie vorgesehen, wenn Sie eine Schaltfläche hinzufügen als eine Untersicht auf etwas, das 1) die übergeordneten Ansicht werden in der Lage zu akzeptieren, touch-Aktionen, isUserInteractionEnabled = true. 2) wird die Ansicht in der übergeordneten Ansicht richtig, und nicht einfach nur sichtbar. Dies kann leicht geschehen, mit Zellen auf dem Bildschirm sichtbar, aber die Ansichten sind außerhalb der Grenzen der Zelle...es wird niemals angeklickt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin einfach nur verwirrt von diesem Problem....
Habe ich es geschafft dieses problem zu beheben, indem Sie diese auf ein Projekt:
aber das gleiche Tat nicht für ein anderes Projekt. Ich habe keine Ahnung, warum...
Gibt es eine andere mögliche Ursache für Probleme wie dieses, und das ist
UITableViewCells
haben jetzt einecontentView
. Dies kann und wird vor anderen Ansichten in Ihre benutzerdefinierte Tabelle anzeigen-Zellen, um sich zu erholen berührt und erkennen der Zellauswahl. Dabei kann block berührt die Ansichten dahinter. Ich habe gerade bemerkt, dass dieses ärgernis bei der Erstellung Zellen mit Federn.Den anerkannten Mittel für den Umgang mit dies ist, um sicherzustellen, dass alle subviews Hinzugefügt werden, nicht zu den tableview Zelle selbst, sondern auf seine
contentView
. Dies ist ein nur-lese-Eigenschaft, die passt, seinen eigenen frame unter bestimmten Umständen, zum Beispiel bei Seite geschoben zu offenbaren die Schaltfläche löschen, oder während der Bearbeitung-Modus. Sie sollten daher sicherstellen, dass alle Elemente, die Sie hinzufügen, um diecontentView
sind intelligent großen und die richtige Größenänderung Verhalten.Sich auch bewusst sein, dass durch hinzufügen von Zellen an der
contentView
können Sie sich block berührt und so verhindern, dass die Zelle ausgewählt werden. Ich persönlich versuche, nicht zu erlauben cell selection in tableviews mit Zellen mit benutzerdefinierten Benutzer-Steuerelemente aktiviert. Es führt nur zu Verwirrung und ungünstigen Schnittstellen. In der Tat, ich bin ernsthaft erwägen, ersetzen alleUITableViews
in Zukunft meine Projekte mitUICollectionViews
, die sind viel anpassungsfähiger.-Asche
Ihre
UIButton
='s y-offset gegeben ist als 160 und derUIView's
Höhe ist einfach gegeben als 120. Bitte ändern Sie dieUIButton's
y-offset und versuchen.Für Swift 3-und Storyboard -
Für mich, ich hatte um mehrere touch innerhalb der Inhalts-Ansicht, und aktivieren Sie Benutzer-Interaktion auf alles - die Tabelle-Ansicht, Tabellenansicht Zelle, Inhalts-Ansicht und UIButton. Ich war mit storyboard.
Ich auch meine tableview cell als Unterklasse.
Da ich nicht finden konnte, hier eine Antwort, wenn ich erkundete das problem, ich habe noch eine Frage auf stack overflow über das. Sie können sehen, mein code und laden Sie ein Projekt mit diesem hier arbeiten: Nicht klicken Sie auf die Schaltfläche innen UITableViewCell?
Die UITableViewCell ist der Umgang mit all den gesten standardmäßig.
Set
cell.selectionStyle = UITableViewCellSelectionStyleNone;
zu machen, deaktivieren Sie das standardmäßige Verhalten.[cell.contentView addSubview:v]
statt[cell addSubview:v]
Ich lief in dieses problem, aber in meinem Fall war es nicht im Zusammenhang mit der Tabelle ansehen, sondern es war, weil ich mit Untersichten in meine Taste für die
userInteractionEnabled
war wahr, Einstellung, Wert für false (NEIN) für alle die-Taste Untersichten behoben das Problem für mich.War ich, dies zu tun:
Und es erscheint der Aufruf der Methode addTarget Innenseite der Verschluss hat nicht funktioniert. Wenn I berücksichtigt die Methode addTarget aus und, anstatt es in der Initialisierung, funktioniert alles!
Erstellen einer custom UITableViewCell. Finden Sie dieser link.
Sagen, Sie haben eine
UIButton
mit dem Namen displayButton, können Sie etwas wie das hier tun:In Ihrem
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
, nachdem Sie Ihre Zelle,Und erstellen Sie die Methode, wie Sie das in Ihrer ViewController:
Ich habe das gleiche Problem, und irgendwie dachte ich, mein Fehler.
Nachdem ich verändert die
constraints
mitself(UITableViewCell)
zuconstraints
mitcontentView
vonself(UITableViewCell)
meine Zelle button ist wieder anklickbar.Wenn Sie keine alternativen haben-Selektor für
UIButton
gedrückt in einigenUITableViewCell
müssen Sie ausschaltenuserInteractionEnabled
für die SchaltflächeIn diesem Fall eine beliebige Taste berühren, wird zu propagieren, um die Zelle zu berühren.
versuchen, diese
Getestet auf "Mvvmcross.iOS" nur