我的UIScrollView有两个小问题。
我设法创建了滚动视图,它与拾取器视图类似,只是它是水平的
问题n.1 是 - 如何获取用户点击的号码?
问题n.2 是 - 如何使滚动视图四处转动 - 永无止境?
一个问题 - 是否可以制作一些“选择指标”?
这是我的代码:
numberArray = [NSArray arrayWithObjects:@“1”,@“2”,@“3”,@“4”,@“5”, @“6”,@“7”,@“8”,@“9”,@“10”,@“11”,@“12”,@“13”,@“14”,@“15”, @“16”,@“17”,@“18”,@“19”,@“20”,@“21”,@“22”,@“23”,@“24”,@“25”, @“26”,@“27”,@“28”,@“29”,@“30”,@“31”,@“32”,@“33”,@“34”,@“35”, @“36”,@“37”,@“38”,@“39”,@“40”,@“41”,@“42”,@“43”,@“44”,@“45”, @“46”,@“47”,@“48”,@“49”,@“50”,@“51”,@“52”,@“53”,@“54”,@“55”, @“56”,@“57”,@“58”,@“59”,@“60”,@“61”,@“62”,@“63”,@“64”,@“65”, @“66”,@“67”,@“68”,@“69”,@“70”,@“71”,@“72”,@“73”,@“74”,@“75”, @“76”,@“77”,@“78”,@“79”,@“80”,@“81”,@“82”,@“83”,@“84”,@“85”, @“86”,@“87”,@“88”,@“89”,@“90”,@“91”,@“92”,@“93”,@“94”,@“95”, @“96”,@“97”,@“98”,@“99”,@“100”,nil];
masterDividerView = [[UIView alloc] initWithFrame:CGRectMake(0, 480, 320, 44)]; morePeople = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 53)]; morePeople.backgroundColor = [UIColor scrollViewTexturedBackgroundColor]; morePeople.delegate = self; [morePeople setBackgroundColor:[UIColor whiteColor]]; [morePeople setCanCancelContentTouches:NO]; morePeople.showsHorizontalScrollIndicator = NO; morePeople.showsVerticalScrollIndicator = NO; morePeople.clipsToBounds = NO; morePeople.scrollEnabled = YES; morePeople.pagingEnabled = NO; NSUInteger nimages = 0; NSInteger tot=0; CGFloat cx = 0; for (; ; nimages++) { NSString *label = [numberArray objectAtIndex:nimages]; if (tot==99) { break; } if (99==nimages) { nimages=0; } UILabel *labelView = [[UILabel alloc] init]; labelView.text = label; labelView.lineBreakMode = UILineBreakModeWordWrap; labelView.numberOfLines = 0; [labelView sizeToFit]; labelView.backgroundColor = [UIColor scrollViewTexturedBackgroundColor]; CGRect rect = labelView.frame; rect.size.height = 53; rect.size.width = 40; rect.origin.x = cx; rect.origin.y = 0; labelView.frame = rect; [morePeople addSubview:labelView]; cx += labelView.frame.size.width+5; tot++; } self.pageControl.numberOfPages = nimages; [morePeople setContentSize:CGSizeMake(cx, [morePeople bounds].size.height)]; [masterDividerView addSubview:morePeople]; [self.view addSubview:masterDividerView];
如果有人知道一个很好的解决方案,我会非常高兴!!!! :))
答案 0 :(得分:2)
你的问题太广了,无法做出详细的答案,但是,你所谈论的一切都可以通过一种非常简单的方式解决。
问题n.1是 - 如何获取用户点击的号码?
如果你想知道你的UIScrollView目前选择了什么元素,那么这不是问题:UIScrollView总是知道它的位置(contentOffset),这使你可以很容易地定义,选择哪个对象(哪个对象)你现在正在和你合作。
如果您想知道用户何时用手指轻敲“选择器视图”(UIScrollView)中的一个元素,那么我会说答案取决于您实际代表数据的方式(如果您在屏幕上一次查看scrollView的一个或多个元素)。但无论如何,您可以使用UITapGestureRecognizer轻松解决此问题。 Smth喜欢:
// add gesture recognizers to the scroll view
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[singleTap setNumberOfTapsRequired:1];
[self.yourScrollView addGestureRecognizer:singleTap];
[singleTap release];
然后在您的选择器中以编程方式滚动它,就像:
- (void)handleSingleTap:(UIGestureRecognizer *)gestureRecognizer
{
CGPoint pointOfTouch = [gestureRecognizer locationInView:self.view];
if ( (pointOfTouch.x > self.rightArrowMin) && (pointOfTouch.x < self.rightArrowMax) ) {
[scrollView setContentOffset:CGPointMake(lastOffset + self.lengthOfLabel, 0) animated:YES];
} else if ( (pointOfTouch.x > self.leftArrowMin) && (pointOfTouch.x < self.leftArrowMax) ) {
[scrollView setContentOffset:CGPointMake(lastOffset - self.lengthOfLabel, 0) animated:YES];
}
}
问题n.2是 - 如何使滚动视图四处转动 - 永无止境?
如果您知道计算scrollView元素序列中的下一个/上一个或随机元素的算法,则可以解决此问题。 基本上,我在我的一个项目中解决了同样的问题(appStore中的免费应用程序“IJCAI11”,你可以在任何选定的会议日的细节中看到datePicker的工作:应用了无限的算法滚动视图,我后来仅从设计的角度来应用的限制)。 我在那里使用的方案很简单,虽然可能有点奇怪(在阅读之前,请注意,在我的情况下,当scrollView处于非滚动状态时,我在屏幕上只看到scrollView的一个元素):
一个问题 - 是否可以制作一些“选择指标”?
如果我正确理解了这个问题,那么只需考虑View / Subview的东西,特别是View类的函数addSubview;)
希望这有帮助!
答案 1 :(得分:0)
我不确定我是否理解你的问题,但你是否已经考虑使用NSTimer
以一定的速度或在一段时间内重复事件? (指着你的“圆圆的东西”。)