現在我要去與SAKrisT的方法from this question。它在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
要使用此功能,在保持表的的viewController代碼:
#import "UIImageView+ForScrollView.h"
// ... Stuff ...
- (void) viewDidAppear
{
[super viewDidAppear];
myTableView.tag = noDisableVerticalScrollTag;
[myTableView flashScrollIndicators];
// ... Stuff ...
}
// ... Stuff ...
注意myTableView.tag
可以在任何地方設置,但[myTableView flashScrollIndicators];
有被稱爲不早於viewDidAppear
(所以不在viewDidLoad
或viewWillAppear
- 它似乎如果表尚未顯示它們不能閃現)。
此方法可行,但它綁定了表的.tag
屬性,因此標記不能用於其他任何內容,這對某些人可能是個問題。
您可能只佔很少百分比的用戶,他們在看到UITableView時可能不知道上下滾動。我有時必須在我的應用程序中這樣做,如果其中一個選項深入到分組的tableview中。我通常在他們第一次安裝我的應用時使用UIAlertView告訴他們。簡單而簡單。 –
@SamBudda:我的屏幕中嵌入了很多表格,其中一些表格的大小使得它們永遠不需要滾動。其他人需要滾動。我想要一個簡單的方法讓我的用戶知道哪個是哪個。 – GeneralMike