Mys*_*ica 5 ionic-framework ionic2 ionic-tabs
我想在键盘打开时隐藏我的标签,并在键盘关闭时再次显示标签.
我知道我可以只使用"AdjustSpan",就是这样,但问题是,如果我这样做,键盘也会隐藏我的聊天输入,因为它是一个页脚.
什么是隐藏标签的最佳方法?
我已经尝试使用[ngClass],我尝试使用Keyboard.disableScroll,也使用参数scrollAssist和autoFocusAssist使用false值来测试app.module.ts ...
似乎没什么用.
知道如何隐藏标签?
先感谢您!!
小智 9
您必须为键盘交互添加一个eventlistener,以将一些css类添加(或删除)到body-tag.在ionic1中,默认情况下从框架中添加了"hide-on-keyboard-open"类.在ionic2中,你必须走"自定义实现路径".那么,这就是你要找的东西:
1)按照ionic2 docs中的描述安装keyboard-plugin和node_modules:
ionic plugin add ionic-plugin-keyboard
npm install --save @ionic-native/keyboard
Run Code Online (Sandbox Code Playgroud)
https://ionicframework.com/docs/native/keyboard/
2)将插件添加到app.modules.ts
3)在app.component.ts中的设备就绪事件中添加所需的事件列表:
this.platform.ready().then(() => {
// Okay, so the platform is ready and our plugins are available.
// Here you can do any higher level native things you might need.
this.statusBar.styleDefault();
this.keyboard.onKeyboardShow().subscribe(() => {
document.body.classList.add('keyboard-is-open');
});
this.keyboard.onKeyboardHide().subscribe(() => {
document.body.classList.remove('keyboard-is-open');
});
})
Run Code Online (Sandbox Code Playgroud)
4)使用附加的class-attribute(hideElementOnKeyboardShown)将类定义添加到app.scss中
body.keyboard-is-open .hideElementOnKeyboardShown{
display: none;
}
Run Code Online (Sandbox Code Playgroud)
5)将类添加到所需的元素,例如页脚,div或其他:
<ion-footer class="hideElementOnKeyboardShown">
<button round ion-button (click)="onLogin()" block>
<ion-icon name="logo-facebook" padding></ion-icon>
Login
</button>
</ion-footer>
Run Code Online (Sandbox Code Playgroud)
6)在这种情况下,将ion-footer标签放在content-tag中,否则在显示键盘时计算的viewheight不正确.
祝你今天愉快!
Ali*_*afa -2
您可以通过编写一个指令来订阅键盘事件,然后在显示/隐藏键盘后向选项卡元素添加(隐藏)/删除(显示)CSS 属性/类(显示:无)来实现此目的。
@Directive({
selector: 'ion-tabs[hideTabs]',
})
export class HideTabsDirective implements OnDestroy {
private static CSS_CLASS_NAME = 'hide-tab-bar';
private show: Subscription;
private hide: Subscription;
constructor(element: ElementRef, renderer: Renderer, keyboard: Keyboard) {
platform.ready().then(() => {
this.show = keyboard.onKeyboardShow().subscribe(() =>
renderer.setElementClass(element.nativeElement, 'hide-tabs', true)
);
this.onKeyboardHideSubscription = keyboard.onKeyboardHide().subscribe(() =>
renderer.setElementClass(element.nativeElement, 'hide-tabs', false)
);
});
}
ngOnDestroy(): void {
if (this.hide !== undefined) {
this.hide.unsubscribe();
}
if (this.show !== undefined) {
this.show.unsubscribe();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在app.scss中添加css类(例如):
.hide-tabs {
display: none;
}
Run Code Online (Sandbox Code Playgroud)
在你的选项卡元素上<ion-tabs hideTabs> </ion-tabs>
**添加代码用于概念验证
| 归档时间: |
|
| 查看次数: |
4728 次 |
| 最近记录: |