• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 05:20:16 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

PageBased App

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

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

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

-(void)touchesEndedNSSet *)touches withEventUIEvent *)event
{
UITouch *touch = [touches anyObject];

if(touch)
{

    CGPoint location = [touch locationInView: [touch view]];

    if (CGRectContainsPoint(webViewTouch,  location))
    {

        //do whatever
        NSLog(@"webView Touched");

        if (self.showReadingToolBar)
        {

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

            // approach 2
            if ([self.delegateReadingToolbar respondsToSelectorselector(contentViewDidFinish:showStatus]) 
            { // this block is never called

                [self.delegateReadingToolbar contentViewDidFinish:self showStatus:NO];

            }


        }
        else
        {

            self.showReadingToolBar = YES;
            self.viewReadingToolBar.hidden = YES;
            [self.delegateReadingToolbar contentViewDidFinish:self showStatus:YES];

        }



    }
}

}

对于方法 2 编码:

ChildController.h

@class ChildController;

@protocol ReadingToolbarShowDelegate <NSObject>

-(void)contentViewDidFinishcontentView *)controller showStatusBOOL)show;

@end

@property (nonatomic,weak)id<ReadingToolbarShowDelegate>delegateReadingToolbar;

ParentController.h

#import "ChildController.h"

@interface ParentController :      UIViewController<UIPageViewControllerDataSource,UIPageViewControllerDelegate,ReadingToolbarShowDelegate>

ParentController.m

-(void)ChildControllerDidFinishcontentView *)controller showStatusBOOL)show
{

   showReadingToolbar = show;
}



Best Answer-推荐答案


如果你分配/初始化一个新的 Controller ,之前设置的值将会消失。您实际上是在创建一个新对象。我看到了几种不同的方法可以做到这一点。

  1. 将您的 Controller 放在导航 Controller 中,然后将其他 Controller 插入或移出堆栈。这样您就不必实例化新对象。

  2. 您可以将所需的显示配置保存在 NSUserDefaults 键/值对中。每当您需要创建这种类型的新对象时,它都会在 NSUserDefault 中查找值。

关于ios - 在基于页面的应用程序中的 webview 上录制时如何隐藏/取消隐藏 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19724592/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap