我通過一些結果圖像創建了一個教程,並在其上添加了一個頁面控件。另外,我添加了一個滑動手勢,通過更改圖片來響應。在下面的代碼中,根據滑動的方向(左/右)來定義開關盒以確定哪個圖像和點應該是下一個。向右滑動,頁面控件的當前頁面會發生變化,但點不會變爲
- (IBAction)handleSwipe:(UISwipeGestureRecognizer *)sender
{
// NSLog(@"swiped");
NSArray *images;
if (self.selectedRow == 0) {
images = [[NSArray alloc] initWithObjects:@"w8.JPG",@"w7.JPG",@"w6.JPG",@"w5.JPG",@"w4.JPG",@"w3.JPG", @"w2.JPG", @"w1.JPG" ,@"w9.JPG", nil];
self.pageControl.hidden = NO;
[self.pageControl setNumberOfPages:9];
UISwipeGestureRecognizerDirection direction = [(UISwipeGestureRecognizer *) sender direction];
switch (direction) {
case UISwipeGestureRecognizerDirectionRight:
if (pageController == 0 || imageIndex == 8)
{
self.Oops = [[UIAlertView alloc] initWithTitle:@"Oops!" message:@"You cannot swipe to the left, there are not any previous steps." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[self.Oops show];
}
else {
[self.pageControl setCurrentPage:pageController - 1];
pageController = pageController - 1;
}
imageIndex++;
break;
case UISwipeGestureRecognizerDirectionLeft:
if (pageController < 8 && pageController >= 0) {
[self.pageControl setCurrentPage:pageController];
pageController = pageController + 1;
}
else {
[self.pageControl setCurrentPage: pageController ];
pageController = 0;
}
imageIndex--;
break;
default:
break;
}
NSLog(@"pagecontroller is %li and imageIndex is %li " , pageController, imageIndex);
imageIndex = (imageIndex < 0) ? ([images count] - 1): imageIndex % [images count];
self.imageView.image = [UIImage imageNamed:[images objectAtIndex:imageIndex]];
}
正如你在代碼中看到的,有一個NSLog;當我運行該應用程序時,一切正常,但是當我向右滑動以查看以前的圖像時,儘管NSLog顯示點和圖像的所有索引都正確更改,並且我們看到之前的圖像,但這些點不會改變。再次向右滑動,點會改變,但會延遲,因爲必須分類的圖像和點的順序變得無序,例如最後一個圖像顯示爲第一個點。 我確定我的算法是正確的,因爲我用NSLog檢查了它,並且在向右滑動之前,一切正常。 任何想法?
我已經改變了代碼位:
switch (direction) {
case UISwipeGestureRecognizerDirectionRight:
if (pageController != 0 && imageIndex != 9) {
[self.pageControl setCurrentPage:(pageController - 1)];
pageController --;
imageIndex++;
}
break;
case UISwipeGestureRecognizerDirectionLeft:
if (pageController <= 8 && pageController >= 0) {
[self.pageControl setCurrentPage:pageController];
pageController = pageController + 1;
imageIndex--;
}
break;
default:
break;
}
現在唯一的問題是,網頁控制計數當前點兩次,當我刷到不同的方向。
我做它。這個問題不僅存在,而且如果我們只向左滑動,每當你到達最後,最後一個圖像就會出現在第一個點上。 @pbasdf – informaticien 2014-11-01 09:23:23
pageController和imageIndex的初始值是什麼? – pbasdf 2014-11-01 11:54:01
imageIndex是8,pageController是0. @pbasdf – informaticien 2014-11-01 11:58:03