的我要的是一個UIView
有很多在它UIButtons
。他們根據存儲在NSArray
中的數據進行放置和排列。因爲有很多按鈕,它們一次不能放在屏幕上。用戶應該能夠縮小以查看所有按鈕或放大以查看詳細信息(標籤)並輕鬆選擇它們。的UIScrollView有大量UIButtons
我嘗試兩種不同的方法:
1)I構成的子類UIView
,放在它的按鈕和該視圖中UIScrollview
內的一個實例。
效果:我可以通過自己的標籤和滾動和縮放工作正常訪問所有的按鈕。但我不能得到的按鈕來處理任何事件(按他們)...
2)我寫了一個UIViewController
具有完全相同的功能,並將其實例添加到UIScrollView
。
效果:我現在可以按下按鈕,但滾動和縮放已停止工作。
這裏查看相關代碼:
- (UIView *)initWithArray:(NSArray *)nArray{
self = [super init];
if (self) {
int count = [nArray count];
for (int i=0; i<count; i++) {
UIButton *button = [[UIButton alloc]
initWithFrame:(__some Code to place the Button__);
button.tag = i+1;
NSString *title = [[NSString alloc] initWithFormat:__code for generating Title__];
[button setTitle:title forState:UIControlStateNormal];
button.titleLabel.font = [UIFont systemFontOfSize:14];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown];
[self addSubview:button];
}
}
return self;
}
,代碼爲matrixController:
- (void)viewDidLoad
{
[super viewDidLoad];
NSMutableArray *nArray = [[NSMutableArray alloc] __some code___];
int count = [nArray count];
for (int i=0; i<count; i++) {
UIButton *button = [[UIButton alloc]
initWithFrame:CGRectMake(__some Code to place the Button__];
button.tag = i+1;
NSString *title = [[NSString alloc] initWithFormat:__code for generating Title__];
[button setTitle:title forState:UIControlStateNormal];
button.titleLabel.font = [UIFont systemFontOfSize:14];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:button];
}
}
而對於ScrollViewController
的代碼:
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 768, 970)];
[self.view addSubview:scrollView];
[scrollView setBackgroundColor:[UIColor blackColor]];
//Zooming
[scrollView setMinimumZoomScale:0.25];
[scrollView setMaximumZoomScale:4.0];
[scrollView setDelegate:self];
// constructing the view
[scrollView addSubview:chartView];
[scrollView bringSubviewToFront:chartView];
OR
[scrollView addSubview:[matrixController view]];
我怎樣才能得到這個工作?
滾動視圖被攔截觸地事件。方法1)應該已經工作了,您應該選擇觸摸按鈕的內部事件。 – Tom
即使觸碰事件不是他想要的,它仍然應該觸發事件。 – LucasTizma