2011-04-13 97 views
3

我有一點點具體問題。對大多數人來說可能並不重要,但我必須處理它,我必須解決下面描述的問題。我試圖使用Google和Apple SDK文檔找到關於它的一些信息,但沒有成功。UIView iOS UIScrollView

我是一個設計一個屏幕,水平卷軸中有很多圖像。有三個三個相同的卷軸。每個卷軸都有標題。我已經實現從UIView派生自定義類,並放在那裏UIScrollView的滾動和UILabel爲標題文本:

@interface MyView : UIView { 
    UIScrollView *iScrollView; 
    UIView  *iTitleView; 
} 

然後我把這個類的對象上UIViewController的觀點:

@implementation MyViewController 

- (void) viewDidLoad { 
    [super viewDidLoad]; 
    ... 
    iScrollViewTop = [[MyView alloc] init]; 
    [self.view addSubview:iScrollViewTop]; 
    ... 
} 

@end 

當我用圖像填充內部滾動視圖並運行我的應用程序,看起來沒問題。但是有一些奇怪的行爲。首先,滾動沒有反彈,如果我已經建立

iScrollView.bounces = NO; 

和第二,當我刷卡滾動,滾動停止後,滾動條沒有一秒鐘內消失。這對我來說很奇怪,因爲當我通常創建一個UIScrollView並將其添加到UIViewController的視圖時,它已經彈起並且滾動條在停止時立即消失。我試圖改變UIScrollView的屬性,如directionalLockEnabled,pagingEnabled,canCancelContentTouches,delaysContentTouches,decelerationRate等。實際上,我試圖改變UIScrollView的幾乎所有屬性,但我無法讓滾動條立即消失。

如果我嘗試將UIScrollView而不是MyView添加到UIViewController.view,它會彈起並且滾動條停止後立即消失。如果我從UIScrollView中繼承MyView的子類,我也會得到正確的行爲,但在這種情況下,我無法管理標題標籤,因爲它與其他內容一起滾動。

因此,這裏是我的問題:

  1. 你知道爲什麼我看到這種行爲?
  2. 如何獲得滾動封裝的「常用」行爲UIView
+0

對此有何好運?我從UIScrollView派生類獲得相同的行爲,但只在iOS 5中。它在4.x中正常工作 – Ralfonso 2012-01-21 02:30:37

回答

1

OK,哈克代碼如下,所以忽略我的所有其他問題,但遵循此模式(這是360x200 westie.jpg =圖像)

@interface MyView : UIView 
{ 
UIScrollView *sv; 
UILabel *l; 
} 
-(MyView*)initWithFrame:(CGRect)frame; 
@end 

@implementation MyView 
-(MyView*)initWithFrame:(CGRect)frame; 
{ 
self = [super initWithFrame:frame]; 
sv = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,360,200)]; 
sv.scrollEnabled = YES; 
sv.contentSize = CGSizeMake(360*3,200); 
[self addSubview:sv]; 

UIImage *i1 = [UIImage imageNamed:@"westie.jpg"]; 
UIImageView *iv1 = [[UIImageView alloc] initWithImage:i1]; 
iv1.frame = CGRectMake(360*0, 0, 360, 200); 
[sv addSubview:iv1]; 
UIImageView *iv2 = [[UIImageView alloc] initWithImage:i1]; 
iv2.frame = CGRectMake(360*1, 0, 360, 200); 
[sv addSubview:iv2]; 
UIImageView *iv3 = [[UIImageView alloc] initWithImage:i1]; 
iv3.frame = CGRectMake(360*2, 0, 360, 200); 
[sv addSubview:iv3]; 

l = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 20)]; 
l.text = @"Hello World"; 
l.backgroundColor = [UIColor blueColor]; 
[self addSubview:l]; 

return self; 
} 

@end

後,在您的創建外部視圖:

[window addSubview:[[MyView alloc] initWithFrame:CGRectMake(0, 20, 360, 200)]];