菜鸟教程小白 发表于 2022-12-13 10:37:57

ios - 滑动手势滑动 UIViews


                                            <p><p>我想做滑动手势来连续滑动 <code>UIView</code> 并从中获取数据。考虑每个 <code>UIView</code> 中的每个单词。我将数据存储在一个数组中,并在转换时打印在 <code>UIView</code> 的标签中。但是当我在显示所有数据程序停止工作后尝试滑动时。我的项目没有显示错误。请帮帮我。</p>

<p>这是我的数组:</p>

<pre><code>addArray = [initWithCapacity:4];
;
;
;
;

flippedArray = [ initWithCapacity:4];
;
;
;
;
</code></pre>

<p>这是我的手势识别编码:</p>

<pre><code>-(void)swipegesture:(UISwipeGestureRecognizer *)recognizer{

    CGPoint location = ;   
    if (recognizer.direction==UISwipeGestureRecognizerDirectionLeft)
    {
      if (increment&lt;)
      {
            NSLog(@&#34;%d&#34;,);
            increment++;
            if(increment==)
            {
                NSLog(@&#34;Fail&#34;);
                //;
                ;
            }
            else
            {
                additionalLabel.text=[ initWithFormat:@&#34;%@&#34;,
                                       ];
                flippedLabel.text = [ initWithFormat:@&#34;%@&#34;,
                                       ];
                NSLog(@&#34;increment %d&#34;,increment);
                [UIView animateWithDuration:0.55 animations:^{
                  ;
                }];
                CATransition *animation = ;
                ;
                ;
                [animation setTimingFunction:[CAMediaTimingFunction
                               functionWithName:kCAMediaTimingFunctionDefault]];
                ;
                [ addAnimation:animation forKey:nil];
            }
      }
    }
    else if(recognizer.direction==UISwipeGestureRecognizerDirectionRight)
    {
      if (increment&gt;=0 &amp;&amp; increment&lt;)
      {
            increment--;
            if(increment&gt;)
            {
                additionalLabel.text=[initWithFormat:@&#34;%@&#34;,
                                       ];
                flippedLabel.text=[initWithFormat:@&#34;%@&#34;,
                                    ];
                NSLog(@&#34;Decrement %d&#34;,increment);
                [UIView animateWithDuration:0.55 animations:^{
                  ;
                }];
                CATransition *animation = ;
                ;
                ;
                [animation setTimingFunction:[CAMediaTimingFunction
                               functionWithName:kCAMediaTimingFunctionDefault]];
                ;
                [ addAnimation:animation forKey:nil];
            }
      }
    }
}
</code></pre>

<p>仅增量时存在问题。我将 <code>NSLog</code> 打印为失败。但是如果手势识别器达到 <code></code> 的值,我不知道如何停止它。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我建议在有效性检查之前增加或减少您的索引值(您将其命名为增量),如果它无效,则在 else 中反转您的操作。像这样:</p>

<pre><code>if (recognizer.direction==UISwipeGestureRecognizerDirectionLeft)
{
    increment++;

    if (increment&lt;)
    {
      // Your code
    }
    else
    {
      increment--; // The increment would pass the range of the array, set it back.
    }
}
</code></pre>

<p>另一个方向也是如此。</p>

<p>编辑:为了澄清,最初的问题是您检查以确保您的索引有效,但是,通过在检查后递增您最终使其无效。使用您的示例,当增量为 3(数组的最高索引)时,它实际上小于数组的计数,即 4。然后您将索引增加到 4,这将超出范围,或者在您的在这种情况下,进入该 if 语句(使用该建议将不再需要该语句)并记录您的 FAIL。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 滑动手势滑动 UIViews,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/8808323/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/8808323/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 滑动手势滑动 UIViews