2016-07-27 9 views
1

mit einem seltsamen Problem hier. Ich möchte meinen Tisch Blick auf die Unterseite der Zeile 0 in Abschnitt blättern 1. ich diesen Code verwende:scrollToRowAtIndexPath scrollt nicht korrekt nach unten auf iOS 8

tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 1), atScrollPosition: .Bottom, animated: true) 

Es scheint für iOS-Versionen 9.0 und höher perfekt im Simulator zu arbeiten. In meinem Gerät (iOS 8.1) und auf dem Simulator für 8.3 macht es das komplette Gegenteil. Es scrollt zum oberen Rand der Zelle und nicht zum Boden! Scheint sehr seltsam. Irgendwelche Ideen, was ich hier falsch machen könnte? Würde mich über Hinweise freuen!

dank
+1

Dies scheint ein Fehler zu sein [http://stackoverflow.com/a/25800080/3769927] – kabiroberai

Antwort

10

auf eine ähnliche Frage nach this answer, so scheint es ein Fehler in iOS 8. Eine Abhilfe die Schriftrolle durch eine sehr kleine Menge zu verzögern wäre zu sein (dieser Code kann auch in der verknüpften Antwort gefunden werden, aber es ist in Objective-C). Beachten Sie, dass ich diesen Code nicht getestet habe, da ich den iOS 8 Simulator nicht installiert habe.

let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC))) 
dispatch_after(delayTime, dispatch_get_main_queue()) { 
    self.tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 1), atScrollPosition: .Bottom, animated: true) 
} 

bearbeiten: Hier ist die Antwort in Swift 3:

DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { 
    self.tableView.scrollToRow(at: IndexPath(row: 0, section: 1), at: .bottom, animated: true) 
} 
+0

Sie sparen meinen Tag! Wenn du keinen Abschnitt hast ... stell einfach 0 (in meinem Fall) – xhinoda

0

versuchen diese:

if self.tempArray.count == 0 { 
} 
else{ 
    let indexPath = NSIndexPath(forRow: tempArray.count - 1, inSection: 0) 
    self.tblChat.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Bottom, animated: true) 
    } 
0

ich die gleiche Frage haben, wenn ich die von UITableViewRowAnimationBottomUITableViewScrollPosition Option zu UITableViewRowAnimationNone, die Magie passiert, das funktioniert gut für mich, hier ist der Code

[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:self.list.count - 1 inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:YES]; 
Verwandte Themen