[英]how to hide/unhide view when taped on webview in page based application
我想隐藏/取消隐藏灰色视图(有按钮),它位于奶油色/别具一格的webView的顶部- 请参阅所附图片
我使用了xcode中可用的基于页面的应用程序模板。
方法1:隐藏/取消隐藏控制器内部
我试图在同一控制器中隐藏/取消隐藏
但是问题是每次创建此控制器的新实例并且隐藏/取消隐藏的布尔值都丢失时
方法2:协议和代表
我也尝试过使用委托/协议从其父控制器维护其状态,但是如果阻塞,它永远不会进入内部-
如果([self.delegateReadingToolbar ........块永远不会被调用。
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)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 respondsToSelector:@selector(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)contentViewDidFinish:(contentView *)controller showStatus:(BOOL)show;
@end
@property (nonatomic,weak)id<ReadingToolbarShowDelegate>delegateReadingToolbar;
ParentController.h
#import "ChildController.h"
@interface ParentController : UIViewController<UIPageViewControllerDataSource,UIPageViewControllerDelegate,ReadingToolbarShowDelegate>
ParentController.m
-(void)ChildControllerDidFinish:(contentView *)controller showStatus:(BOOL)show
{
showReadingToolbar = show;
}
如果分配/初始化一个新的控制器,以前设置的值将消失。 您实际上是在创建一个新对象。 我看到您可以通过几种不同的方式执行此操作。
将您的控制器放在导航控制器中,然后将其他控制器推入或推出堆栈。 这样,您不必实例化新对象。
您可以将所需的显示配置保存在NSUserDefaults键/值对中。 每当您需要创建此类型的新对象时,它都会在NSUserDefault中查找值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.