我的iphone应用程序中有一些(分组样式)表格(仅在屏幕的一部分上添加Interface Builder,但未加入子类UITableViewController),80%的时间都很小,适合屏幕.当桌子适合屏幕时,我想禁用滚动,使其更清洁.但是如果表格离开屏幕(稍后将行添加到行中),我想再次启用滚动(因为否则您无法看到该内容.)
有没有办法做到这一点?我似乎无法弄明白.我知道这样做:
tableView.scrollEnabled = NO;
Run Code Online (Sandbox Code Playgroud)
但我不确定在哪里,或者我是否必须计算表格对象的大小或其他东西才能使其发挥作用.
if (table.contentSize.height < table.frame.size.height) {
table.scrollEnabled = NO;
}
else {
table.scrollEnabled = YES;
}
Run Code Online (Sandbox Code Playgroud)
我在调用reloadData表后运行此代码,它计算出正确的大小并且似乎有效.
table.frame.size.height是Interface Builder屏幕上显示的对象的实际大小(您可以看到这一点),而table.contentSize.height高度是:标题,页脚和每个单元格的高度加在一起.
我有一个UITableView,只要用户向其添加另一个元素/表格单元格,我就会滚动到底部.对于屏幕,这可以正常工作,因为用户可以看到他们刚刚在表格底部添加的单元格.但是当使用VoiceOver运行我的应用程序时,第一个聚焦和读取的UITableCell是屏幕上可见的顶部单元格.
我想设置它,以便聚焦然后在UITableView出现时立即读取的单元格是表格中的最后一个单元格.我该怎么做呢?看起来它很简单,但我无法弄明白.
这是我到目前为止所尝试的(在cellForRowAtIndexPath中):
if (cellJustAdded && indexPath.row == [array count]-1) {
cell.accessibilityElementIsFocused = YES; //obviously this does not work
}
Run Code Online (Sandbox Code Playgroud)
但我不认为你可以像这样使用accessibilityElementIsFocused.