Ios 是否有一种典型的方式通知用户UITableView是可滚动的?

Ios 是否有一种典型的方式通知用户UITableView是可滚动的?,ios,objective-c,uiscrollview,Ios,Objective C,Uiscrollview,在iOS之前的7天中,用户可以很容易地判断UITableView上是否有更多需要滚动的内容。不过,按照现在表格的显示方式,似乎很难提前知道表格是否显示了所有数据,或者是否有更多隐藏的数据需要用户滚动查看 是否有一种典型的方式通知用户表中的内容比显示的内容多?如果没有,有人知道我该怎么做吗?我以前见过,如果可以沿给定方向滚动,会有一个浮动箭头覆盖物出现在桌子的一侧,但我认为它是在Windows或Android设备上,我不记得在iOS设备上见过它。我也发现了这一点,但那里的答案要么说这是不可能的,要

在iOS之前的7天中,用户可以很容易地判断
UITableView
上是否有更多需要滚动的内容。不过,按照现在表格的显示方式,似乎很难提前知道表格是否显示了所有数据,或者是否有更多隐藏的数据需要用户滚动查看

是否有一种典型的方式通知用户表中的内容比显示的内容多?如果没有,有人知道我该怎么做吗?我以前见过,如果可以沿给定方向滚动,会有一个浮动箭头覆盖物出现在桌子的一侧,但我认为它是在Windows或Android设备上,我不记得在iOS设备上见过它。我也发现了这一点,但那里的答案要么说这是不可能的,要么说评论表明它们执行得很差。有没有人能想出一个好办法


编辑:为了澄清一下,我正在iPad上开发,在一个
UIViewController
中并排嵌入多个小表格,这有点非典型,所以很多快速技巧都不起作用。其中一些表需要滚动以显示其所有内容,而一些表的大小将使所有内容始终可见。由于每个屏幕上都有这么多内容,我需要一种永久性的方式来指示表格可以滚动,因为我不希望我的用户错过它。

我看到的一个很好的模式是在表格视图出现后调用。这给了用户一个直观的指示,即滚动可以做一些事情,同时不需要对表视图的绘图进行任何永久性修改。

我看到的一个很好的模式是在表视图出现后调用。这给了用户一个直观的指示,即滚动可以做一些事情,同时不需要对表视图的绘图进行任何永久性修改。

我尝试在我的应用程序中使用一种更自然的方法,即调整单元格大小,使表中最后一个可见的单元格“被切断”理想情况下,最好是在文本或图像之间进行剪切,以便用户立即了解更多内容,但有时这很难做到,尤其是在实现动态文本大小调整的情况下

当然,现代用户大多熟悉滚动,因此通常不需要指示器

下面是另一个更自然的方式,让他们知道有更多的内容。请注意,不仅底部的字母被切掉,顶部也有很大的空间;这提供了一个进一步的视觉指示器,文本可以滚动到负片空间以显示更多内容


我尝试在我的应用程序中使用一种更自然的方法,即调整单元格大小,使表格中最后一个可见的单元格被“截断”。理想情况下,最好是在文本或图像中截断,以便用户立即了解更多,但有时这很难做到,尤其是在实现动态文本大小调整时

当然,现代用户大多熟悉滚动,因此通常不需要指示器

下面是另一个更自然的方式,让他们知道有更多的内容。请注意,不仅底部的字母被切掉,顶部也有很大的空间;这提供了一个进一步的视觉指示器,文本可以滚动到负片空间以显示更多内容


现在,我将使用SAKrisT的方法。它在
UIImageView
上创建一个类别,这是
UIScrollView
上的滚动条的子类

类别:

//.h
#define noDisableVerticalScrollTag 836913
#define noDisableHorizontalScrollTag 836914

//.m
@implementation UIImageView (ForScrollView)

- (void) setAlpha:(float)alpha {

    if (self.superview.tag == noDisableVerticalScrollTag) {
        if (alpha == 0 && self.autoresizingMask == UIViewAutoresizingFlexibleLeftMargin) {
            if (self.frame.size.width < 10 && self.frame.size.height > self.frame.size.width) {
                UIScrollView *sc = (UIScrollView*)self.superview;
                if (sc.frame.size.height < sc.contentSize.height) {
                    return;
                }
            }
        }
    }

    if (self.superview.tag == noDisableHorizontalScrollTag) {
        if (alpha == 0 && self.autoresizingMask == UIViewAutoresizingFlexibleTopMargin) {
            if (self.frame.size.height < 10 && self.frame.size.height < self.frame.size.width) {
                UIScrollView *sc = (UIScrollView*)self.superview;
                if (sc.frame.size.width < sc.contentSize.width) {
                    return;
                }
            }
        }
    }

    [super setAlpha:alpha];
}
@end
请注意,
myTableView.tag
可以在任何地方设置,但是
[myTableView flashScrollIndicators]viewdide出现之前调用code>(因此,不在
viewdideload
viewdide出现之前-如果表尚未显示,它们似乎无法闪烁)


这个方法是有效的,但是它绑定了表的
.tag
属性,所以tag不能用于其他任何东西,这对某些人来说可能是个问题。

现在我将使用SAKrisT的方法。它在
UIImageView
上创建一个类别,这是
UIScrollView
上的滚动条的子类

类别:

//.h
#define noDisableVerticalScrollTag 836913
#define noDisableHorizontalScrollTag 836914

//.m
@implementation UIImageView (ForScrollView)

- (void) setAlpha:(float)alpha {

    if (self.superview.tag == noDisableVerticalScrollTag) {
        if (alpha == 0 && self.autoresizingMask == UIViewAutoresizingFlexibleLeftMargin) {
            if (self.frame.size.width < 10 && self.frame.size.height > self.frame.size.width) {
                UIScrollView *sc = (UIScrollView*)self.superview;
                if (sc.frame.size.height < sc.contentSize.height) {
                    return;
                }
            }
        }
    }

    if (self.superview.tag == noDisableHorizontalScrollTag) {
        if (alpha == 0 && self.autoresizingMask == UIViewAutoresizingFlexibleTopMargin) {
            if (self.frame.size.height < 10 && self.frame.size.height < self.frame.size.width) {
                UIScrollView *sc = (UIScrollView*)self.superview;
                if (sc.frame.size.width < sc.contentSize.width) {
                    return;
                }
            }
        }
    }

    [super setAlpha:alpha];
}
@end
请注意,
myTableView.tag
可以在任何地方设置,但是
[myTableView flashScrollIndicators]viewdide出现之前调用code>(因此,不在
viewdideload
viewdide出现之前-如果表尚未显示,它们似乎无法闪烁)


这个方法是有效的,但是它将表的
.tag
属性绑定起来,这样标记就不能用于其他任何东西,这对某些人来说可能是个问题。

是的,这就是我链接的问题中的大多数建议所说的。不过我在找一些永久性的东西。我正在开发一个iPad应用程序,我的屏幕上有很多信息显示在不同的地方,所以如果我只闪烁一次,用户可能会错过它。我可以每隔一段时间闪现一下,但过一会儿就会变得烦人。是的,我链接的问题中的大多数建议都是这么说的。不过我在找一些永久性的东西。我正在开发一个iPad应用程序,我的屏幕上有很多信息显示在不同的地方,所以如果我只闪烁一次,用户可能会错过它。我可以每隔一段时间刷新一次,但过一段时间就会变得很烦人。在看到UITableView时可能不知道上下滚动的用户中,你可能占了很少的比例。如果其中一个选项位于分组表视图的下方,我有时必须在我的应用程序中执行此操作。当他们第一次安装我的应用程序时,我通常会告诉他们使用UIAlertView。模拟