菜鸟教程小白 发表于 2022-12-12 15:50:43

ios - UIPopoverController 解雇的奇怪延迟


                                            <p><p>也许这纯粹是模拟器相关的。我还没有在实际设备上尝试过。</p>

<p>我使用的是最新款最棒的 MacBook,它配备 1TB 闪存驱动器、95% 可用的处理器,并且内存消耗低于全部内存消耗。</p>

<p>我有一个 UIPopoverController ,里面有 4 个项目,大小与这些项目相同。
相关的 UIPopoverController 中没有任何复杂的、多线程的或长时间运行的东西。</p>

<p>我已将出现和关闭动画设置为 0,但是当我点击列表中的某个项目时,弹出框消失时似乎存在 0 到 0.4 秒之间的随机不确定延迟。当然 0 是意料之中的,但接近半秒的时间明显更长且令人不安。</p>

<p>知道是什么原因造成的吗?</p>

<p>显示弹出框的代码...</p>

<pre><code>-(IBAction)theLandImpsButtonPressed:(UIButton *)sender
{
    iRpNameValuePopover *thePopoverContent = [ init];
    thePopoverContent.theTableValues = ;
    impsLandPopover = [ initWithContentViewController:thePopoverContent];
    thePopoverContent.thePopoverController = impsLandPopover;
    impsLandPopover.popoverContentSize = ;
    impsLandPopover.delegate = self;

    ;
}
</code></pre>

<p>关闭弹出框的代码...
顺便说一句,这里没有评估时间 <code></code> 因为它现在只是返回 YES。</p>

<pre><code>-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    _theChosenNameValueItem = ;
    ;
}


// This contentViewController is encapsulated INSIDE a UIPopoverViewController, and this class cannot itself
// close the popover which contains it, hence the need for the reference to the popover controller
// It is the popover&#39;s delegate... the one that created the popover, that is able to close it.
-(void)acceptUserChoiceAndClose
{
    _theUserChoseAValue = NO; // Start by assuming they didn&#39;t chose a valid value.

    if ()
    {
      // Set variable that indicates the user chose a value which can be saved to core data, and/or presented on screen.
      _theUserChoseAValue = YES;

      // Close the popover.
      ;

      // Notify the class that presented the popover that the popover has been dismissed.
      // It will still be available to the dismissal method where code can retrieve the user&#39;s choice, and set the popover to nil.
      if (_thePopoverController.delegate &amp;&amp; )
      {
            ;
      }
    }
    else
    {
      ;
    }

}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在主线程中关闭 <code>viewController</code> 将解决问题。</p>

<pre><code>dispatch_async(dispatch_get_main_queue(), ^{
      ;
});
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - UIPopoverController 解雇的奇怪延迟,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/31422980/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/31422980/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - UIPopoverController 解雇的奇怪延迟