2017-04-10 6 views
0

Ich habe eine UITableView oben auf einem MKMapView. Ich möchte eine ähnliche Funktionalität wie Apples Google Maps App haben. Hier können Sie einen Tisch auf und ab bewegen, aber trotzdem die dahinter liegende Karte verschieben. Im Moment habe ich eine leere Zelle bei Index 0, die frei ist, und ich möchte alle Berührungen deaktivieren können, die diese Zelle empfängt, und erlaubt der Karte dahinter, sich zu bewegen, aber wenn die Zelle in Index 1 berührt wird, kann diese Zelle nach oben scrollen und der Rest des Tisches steht jetzt oben auf der Karte.Swift: Deaktivieren Sie Berührungen auf einem UITableViewCell

Wenn es einen besseren Weg gibt, um dieses Problem zu lösen, bin ich bereit, Ihre Lösung zu versuchen!

+0

Sie können berühren Sie auf Zelle von Schnittstellen-Generator, wo Sie die Eigenschaft für die Tabellenansicht namens Auswahl finden und setzen Sie es mit "keine Auswahl" -Wert. – Hosny

+0

@Hosny Das macht nur die Zelle nicht auswählbar, aber erlaubt immer noch der nicht auswählbaren Zelle, die Tabelle zu bewegen, in der sich die Zelle befindet. Ich brauche die Zelle und die Tabelle, um sich nicht bei Berührungsbewegungen zu bewegen, sondern die Karte hinter der Zelle und zuzulassen der Tisch zum Bewegen. – Averex

Antwort

0
func tableView(_ tableView: UITableView, didSelectRowAt 
indexPath: IndexPath){ 

    //UITableViewCell *cell = something 

    if indexPath.row == 0 { 
     cell.selectionStyle = .none; 
     cell.isUserInteractionEnabled = false 
    } 


} 

Durch diesen Code wird sichergestellt, dass die Zelle nicht hervorgehoben wird, wenn der Benutzer darauf klickt. Und dann die zweite Zeile in der if ist sicherzustellen, dass tableView:didSelectRowAtIndexPath: nicht aufgerufen wird, was der Fall sein wird, wenn die Zeile weggelassen wird, und obwohl SelectionStyle keine ist!

+0

Damit stoppt die Interaktion auf der Zelle, aber die Berührung passiert die Zelle nicht auf die Karte. Die Berührung interagiert immer noch mit dem Tisch, in dem sich die Zelle befindet. – Averex

+0

@Averex Also bin ich irgendwie neugierig, denn wenn Sie die Tabellenansicht über die Karte stellen und die erste Zelle nicht auf die Berührung des Benutzers reagiert, wie sollte sie sich auswirken die Kartenansicht? Und wenn ich mir Apple Maps anschaue, zieht auch die erste Zeile (Index 0) den Tisch hoch, bewegt aber die Karte überhaupt nicht. Ich bin mir also nicht sicher, was Sie mit "Berührung geht nicht durch die Zelle zur Karte" meinen, denn so weit ich weiß, wenn sich ein Element oben auf der Karte befindet und Sie es berühren, reagiert die Karte nicht an die Berührung. –

+0

Um Ihre erste Frage zu beantworten, möchte ich, dass die leere Zelle ein Puffer ist, sodass die Zelle mit dem Index 1 in der Nähe des unteren Bildschirmrands beginnen kann. Ich möchte nicht, dass der Benutzer die leere Zelle verwendet, um die Tabelle zu verschieben. Ich möchte sie nur als Puffer für die Zelle mit dem Index 1 haben. Dann werden alle Berührungen der leeren Zelle niemals auf die Tabelle wirken, sondern die Tabelle überschreiben dahinter zu verwenden. Gibt es eine andere Möglichkeit, den Puffer ohne eine leere Zelle zu machen? – Averex

Verwandte Themen