Iphone UIScrollView-类似UIPickerView的选择
Iphone UIScrollView-类似UIPickerView的选择,iphone,objective-c,ios,xcode,uiscrollview,Iphone,Objective C,Ios,Xcode,Uiscrollview,我的UIScrollView有两个小问题。 我设法创建了滚动视图,它与选择器视图类似,只是它是水平的。 问题n.1是-如何获取用户点击的号码? 问题n.2是-如何使scrollview不断循环-永无止境? 一个问题-是否可以制作一些“选择指示器” 这是我的密码: numberArray=[NSArray阵列,其对象为:@“1”、“2”、“3”、“4”、“5”, @"6", @"7", @"8", @"9", @"10", @"11", @"12", @"13", @"14", @"15", @"
我的UIScrollView有两个小问题。
我设法创建了滚动视图,它与选择器视图类似,只是它是水平的。
问题n.1是-如何获取用户点击的号码?
问题n.2是-如何使scrollview不断循环-永无止境?
一个问题-是否可以制作一些“选择指示器” 这是我的密码: numberArray=[NSArray阵列,其对象为:@“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,无"; 如果有人知道解决这个问题的好办法,我会非常高兴的!!!!:))
我不确定我是否正确理解了你的问题,但你是否已经想过使用
NSTimer
以一定的速度或在一定的时间内重复事件?(指着你的“圆圆的东西”。你的问题太宽了,无法给出详细的答案,但是是的,你所说的每件事都可以很容易地解决
问题n.1是-如何获取用户点击的号码
如果您想知道您的UIScrollView此时选择了什么元素,那么这不是问题:UIScrollView总是知道它的位置(contentOffset),这使您可以轻松地定义选择了哪个对象(您正在使用哪个对象)
如果您想知道用户何时用手指点击“picker view”(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];
}
}
-(void)handleSingleTap:(UIGestureRecognitor*)GestureRecognitor
{
CGPoint pointOfTouch=[GestureRecognitor locationInView:self.view];
if((触点x>自右箭头最小值)和&(触点x<自右箭头最大值)){
[scrollView setContentOffset:CGPointMake(lastOffset+self.lengthOfLabel,0)动画:是];
}else if((pointOfTouch.x>self.leftArrowMin)和&(pointOfTouch.x
问题n.2是-如何使scrollview不断循环-永无止境
如果您知道计算scrollView元素序列中的下一个/上一个或随机元素的算法,则可以解决此问题。
基本上,我在我的一个项目中为自己解决了同样的问题(appStore中的免费应用程序“IJCAI11”,你可以在datePicker的工作中看到所选会议当天的细节:应用了无限滚动视图的算法,我后来仅从设计角度应用了这些限制)。
我在那里使用的方案很简单,但可能有点奇怪(在阅读之前,请注意,在我的例子中,当scrollView处于非滚动状态时,我在屏幕上只看到scrollView的一个元素):
如果我正确地理解了这个问题,那么只考虑视图/子视图的东西,特别是视图类的函数AddiSiew;p>
希望这有帮助 我认为这样创建
numberArray
会更好:NSMutableArray*numberArray=[[NSMutableArray alloc]init];对于(int i=0;i<100;i++){[numberArray addObject:[NSString stringWithFormat:@“%i”,i]];}
@fabian789是的,你是对的。。谢谢:)我的意思是,当你滚动到100时,下一个数字将是1,反之亦然。太好了!一切都很好,只是一件小事-你如何实际处理把手上的触摸(点击:?:)其他一切都很好,功能齐全。Tha
- (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];
}
}