将棋プログラミング

(将棋に関する)ソフトウェア開発のノウハウ等。

iOS 13 以降、UITableView の scrollToRowAtIndexPath が正しく動作しない場合がある

iOS 13 以降、UITableView の scrollToRowAtIndexPath が正しく動作しない場合がある。
最初に気がついたのは、iOS 13 になったとき、iPad では、scrollToRowAtIndexPath が正しく動作しなくなった時であった。
この時、animated が NO だと問題があり、YES だと正しく動作することがわかった。

最近、UITableView のセルの表示を追加した際、iOS 14 の iPhone でも、同様の問題が起きることに気がついた。
animated が NO だと問題があり、YES だと正しく動作する。
シミュレータでは問題がなく、実機だけで問題が起きるので、やっかいである。

この問題は、次のように、50 ms の遅延実行で、解決した。

    [self performSelector:@selector(***:) withObject:nil afterDelay: 0.05];   // 遅延実行

参考:
stackoverflow.com