![](/img/trans.png)
[英]ios A tableview above a scroll view and the button on the scroll view cannot be tapped
[英]scroll view + segment button +iOS
我有2個滾動視圖。 我在第一個滾動視圖上放了很多按鈕。 當我在第一個滾動視圖中單擊一個按鈕時,相關按鈕將填充第二個滾動視圖。
我希望第一個滾動視圖中的按鈕具有效果,就像它們是段控件一樣。 即,當單擊一個按鈕時,其圖像變暗,並且在單擊第一個滾動視圖中的其他按鈕之前無法再次單擊。
怎么做到這一點? 任何示例代碼表示贊賞! 謝謝!
你不能只跟蹤上次點擊的按鈕,並重置那個按鈕處於活動狀態,並將你現在點擊的按鈕設置為非活動狀態嗎? 只需創建一個屬性lastClicked,然后執行以下操作:
-(IBAction) buttonClicked:(UIButton *)sender {
[self.lastClicked setUserInteractionEnabled:YES];
[self.lastClicked setImage:[UIImage imageNamed:@"enabledImage"] forState:UIControlStateNormal];
[sender setUserInteractionEnabled:NO];
[sender setImage:[UIImage imageNamed:@"disabledImage"] forState:UIControlStateNormal];
self.lastClicked = sender;
}
嘗試在滾動視圖中添加分段控件。
- (void)viewDidLoad
{
[super viewDidLoad];
journals = [[NSMutableArray alloc]init];
self.tableView.dataSource = self;
self.tableView.delegate = self;
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 49, 320, 29)];
self.segmentedControl.frame = CGRectMake(0, 0, 640, 29);
scrollView.contentSize = CGSizeMake(self.segmentedControl.frame.size.width, self.segmentedControl.frame.size.height -1);
scrollView.showsHorizontalScrollIndicator = NO;
self.segmentedControl.selectedSegmentIndex = 0;
[scrollView addSubview:self.segmentedControl];
[self.view addSubview:scrollView];
[self fillJournals];
// Do any additional setup after loading the view, typically from a nib.
}
超級簡單,非常難看,但它的工作原理。 您可以通過檢查圖像和按鈕的交互狀態來進一步優化它,這樣您就不會在每次循環時設置圖像。
-(void) buttonClicked:(UIButton *)sender {
for (UIButton *btn in self.scrollView.subviews) {
if ([sender isKindOfClass:[UIButton class]]) {
if (btn == sender) {
[btn setUserInteractionEnabled:NO];
[btn setImage:[UIImage imageNamed:@"disabledImage"] forState:UIControlStateNormal];
} else {
[btn setUserInteractionEnabled:YES];
[btn setImage:[UIImage imageNamed:@"enabledImage"] forState:UIControlStateNormal];
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.