菜鸟教程小白 发表于 2022-12-13 05:20:16

ios - 在基于页面的应用程序中的 webview 上录制时如何隐藏/取消隐藏 View


                                            <p><p>我想隐藏/取消隐藏灰色 View (有按钮),它位于奶油色/比格色 webView 的顶部 - <strong>请参阅附图</strong></p>

<p> <img src="/image/BomQ2.png" alt="PageBased App"/> </p>

<p>我使用了 xcode 中提供的基于页面的应用程序模板。</p>

<p><strong>方法一:在 Controller 内部隐藏/取消隐藏</strong>
<br/>我试图在同一个 Controller 中隐藏/取消隐藏<br/>但问题是每次创建此 Controller 的新实例并且隐藏/取消隐藏的 bool 值都丢失了</p>

<p><strong>方法 2:协议(protocol)和委托(delegate)</strong>
<br/> 我也尝试使用委托(delegate)/协议(protocol)来维护其父 Controller 的状态,但它永远不会进入 ifblock-
<br/> if ([self.delegateReadingToolbar........block 永远不会被调用。</p>

<pre><code>-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = ;

if(touch)
{

    CGPoint location = ];

    if (CGRectContainsPoint(webViewTouch,location))
    {

      //do whatever
      NSLog(@&#34;webView Touched&#34;);

      if (self.showReadingToolBar)
      {

            self.showReadingToolBar = NO; // approach 1
            self.viewReadingToolBar.hidden = NO;

            // approach 2
            if ()
            { // this block is never called

                ;

            }


      }
      else
      {

            self.showReadingToolBar = YES;
            self.viewReadingToolBar.hidden = YES;
            ;

      }



    }
}

}
</code></pre>

<p><strong>对于方法 2 编码:</strong></p>

<p><strong>ChildController.h</strong></p>

<pre><code>@class ChildController;

@protocol ReadingToolbarShowDelegate &lt;NSObject&gt;

-(void)contentViewDidFinish:(contentView *)controller showStatus:(BOOL)show;

@end

@property (nonatomic,weak)id&lt;ReadingToolbarShowDelegate&gt;delegateReadingToolbar;
</code></pre>

<p><strong>ParentController.h</strong></p>

<pre><code>#import &#34;ChildController.h&#34;

@interface ParentController :      UIViewController&lt;UIPageViewControllerDataSource,UIPageViewControllerDelegate,ReadingToolbarShowDelegate&gt;
</code></pre>

<p><strong>ParentController.m</strong></p>

<pre><code>-(void)ChildControllerDidFinish:(contentView *)controller showStatus:(BOOL)show
{

   showReadingToolbar = show;
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果你分配/初始化一个新的 Controller ,之前设置的值将会消失。您实际上是在创建一个新对象。我看到了几种不同的方法可以做到这一点。 </p>

<ol>
<li><p>将您的 Controller 放在导航 Controller 中,然后将其他 Controller 插入或移出堆栈。这样您就不必实例化新对象。 </p></li>
<li><p>您可以将所需的显示配置保存在 NSUserDefaults 键/值对中。每当您需要创建这种类型的新对象时,它都会在 NSUserDefault 中查找值。 </p></li>
</ol></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在基于页面的应用程序中的 webview 上录制时如何隐藏/取消隐藏 View ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/19724592/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/19724592/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在基于页面的应用程序中的 webview 上录制时如何隐藏/取消隐藏 View