Ionic-framework: ํ‚ค๋ณด๋“œ ๋ฌธ์ œ

์— ๋งŒ๋“  2017๋…„ 05์›” 03์ผ  ยท  98์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ionic-team/ionic-framework

Ionic ๋ฒ„์ „ : ( "x"๋กœ ํ•˜๋‚˜ ์„ ํƒ)
[] 1.x
[x] 2.x
[x] 3.x

์ œ์ถœ ์ค‘์ž…๋‹ˆ๋‹ค
[x] ๋ฒ„๊ทธ ์‹ ๊ณ 
[ ] ๊ธฐ๋Šฅ ์š”์ฒญ
[] ์ง€์› ์š”์ฒญ => ์—ฌ๊ธฐ์— ์ง€์› ์š”์ฒญ์„ ์ œ์ถœํ•˜์ง€ ๋ง๊ณ  ๋‹ค์Œ ์ฑ„๋„ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค : https://forum.ionicframework.com/ ๋˜๋Š” http://ionicworldwide.herokuapp.com/

ํ˜„์žฌ ํ–‰๋™ :

ํ‚ค๋ณด๋“œ ๋ฐ ์ž…๋ ฅ ์Šคํฌ๋กค์€ Ionic ์•ฑ์—์„œ ์˜ค๋žซ๋™์•ˆ ๋„์ „์ด๋˜์–ด ์™”์œผ๋ฉฐ Ionic V1๋กœ ๋Œ์•„๊ฐ”์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ตœ๊ทผ ์ด๋Ÿฌํ•œ ํ‚ค๋ณด๋“œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ํ‚ค๋ณด๋“œ ๋ฐ ์ž…๋ ฅ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๊ฐ€์žฅ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ฒฝ๊ณ ์˜ ์ž…๋ ฅ์€ ๋•Œ๋•Œ๋กœ "์ด์ƒํ•˜๋‹ค"
  • ์ž…๋ ฅ์ด ๋งŽ์€ ์–‘์‹์˜ ๊ฒฝ์šฐ ํŽ˜์ด์ง€ ์•„๋ž˜์ชฝ์— ์ž…๋ ฅ์„ ์ง‘์ค‘ํ•  ๋•Œ ์Šคํฌ๋กค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž…๋ ฅ, ํ…์ŠคํŠธ ์˜์—ญ ๋“ฑ์„ ์ „ํ™˜ํ•˜๋ฉด ๋•Œ๋•Œ๋กœ "๋ฐ”์šด์‹ฑ"๋ฐ ๊ธฐํƒ€ ์ด์ƒํ•œ UI ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ์ž…๋ ฅ์„๋ณด๊ธฐ ํ•˜๋‹จ์— ๊ณ ์ •ํ•˜๋ฉด iOS์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (ํ‚ค๋ณด๋“œ๊ฐ€ ์ž…๋ ฅ์„ ๊ฐ€๋ฆผ).

์šฐ๋ฆฌ๋Š” ํ˜„์žฌ์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋ ˆ์ž„ ์›Œํฌ (์ฃผ๋กœ Android ์šฉ)์˜ ๋กœ์ง์„ ์ˆ˜์ •ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ iOS์—์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด WKWebView ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ผ๋ถ€ ์ˆ˜์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ iOS ์šฉ ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ ๋œ WKWebView ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ถ„๊ธฐ๊ฐ€ ์žˆ์œผ๋ฉฐ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ์ด๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณต ํ•  ์ค€๋น„๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ์— ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์ด์žˆ๋Š” Google ๋ฌธ์„œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ˆ˜์ • ์‚ฌํ•ญ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค! ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์˜๊ฒฌ์œผ๋กœ ์ž์œ ๋กญ๊ฒŒ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค. Ionic ๋ชจ๋‘๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

help wanted v3

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ œ ๊ฒฝ์šฐ์—๋Š” AppModule์ด ์•„๋ž˜์— ๊ฐ€์ ธ ์˜ค๊ธฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๊ธฐ๋ณธ๊ฐ’๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

IonicModule.forRoot(MyApp, {
            scrollPadding: false,
            scrollAssist: true, 
            autoFocusAssist: false
        }),

๋ชจ๋“  98 ๋Œ“๊ธ€

์ œ ๊ฒฝ์šฐ์—๋Š” AppModule์ด ์•„๋ž˜์— ๊ฐ€์ ธ ์˜ค๊ธฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๊ธฐ๋ณธ๊ฐ’๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

IonicModule.forRoot(MyApp, {
            scrollPadding: false,
            scrollAssist: true, 
            autoFocusAssist: false
        }),

ํ•˜๋‚˜๋‹˜ ๊ฐ์‚ฌ ๋“œ๋””์–ด๊ธฐ๋„ ์‘๋‹ต

  1. ํƒญ ๋‚ด์˜ ๊ฒ€์ƒ‰ ํ‘œ์‹œ ์ค„์€ ํƒญ ํ‘œ์‹œ ์ค„์„ ์œ„๋กœ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

Android์—์„œ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•?
Android ๋˜๋Š” ๋ฐ์Šคํฌํ†ฑ์„ ์œ„ํ•ด ํ•ญ์ƒ ๊ธฐ๊บผ์ด ๋„์™€ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. :)

์•ˆ๋…•ํ•˜์„ธ์š” @ mburger81 , ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค! ionic-angular์˜ ์—…๋ฐ์ดํŠธ ๋œ ์•ผ๊ฐ„ ๋ฒ„์ „์€ ์•„์ง ์—†์ง€๋งŒ, ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋‚˜๋ฅผ ์ถœ์‹œ ํ•  ๋•Œ ๋‚˜๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ป๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ง€์นจ์œผ๋กœ์ด ๋ฌธ์ œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ข‹์•„์š”, ์šฐ๋ฆฌ๋Š” ์ž…๋ ฅ ์Šคํฌ๋กค ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์—์„œ ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ํ…Œ์ŠคํŠธํ•˜์—ฌ ํ…Œ์Šคํ„ฐ์—๊ฒŒ ๋ฆด๋ฆฌ์Šคํ•˜๊ธฐ ์ „์— INVALID VIEWS ๋ฒ„๊ทธ (์ด์ •ํ‘œ์— ๋งŒ์กฑ)๋ฅผ ํ•ด๊ฒฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ์ค‘์š”ํ•œ ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์•Œ์•˜์–ด! ๋”ฐ๋ผ์„œ ์ž…๋ ฅ ์Šคํฌ๋กค ๋ฌธ์ œ์—์„œ ํ‚ค๋ณด๋“œ๊ฐ€ ์—ด๋ ธ์„ ๋•Œ ๊ฐ€๋ฆฌ์ง€ ์•Š๋Š”๋ณด๊ธฐ ์˜์—ญ์— ์ž…๋ ฅ์„ ๋ฐฐ์น˜ ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ์Šคํฌ๋กค ํ•  ๋•Œ ์ปค์„œ๊ฐ€ ๋ง‰๋Œ€ ๋’ค๋กœ ์ด๋™ํ•˜์ง€ ์•Š๋„๋กํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋กค ํ•  ๋•Œ ์ปค์„œ๊ฐ€ ์ด์˜จ ํ—ค๋”๋ฅผ ์ฐจ๋‹จํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

ํŒ€์› @danbucholtz ์˜ iOS ํ”ผ๋“œ๋ฐฑ :

์–‘์‹ ๋‚ด์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฐœ๋ณ„ ์ปจํŠธ๋กค (์˜ˆ : ๊ฒ€์ƒ‰ ์ž…๋ ฅ)์—์„œ "์ œ์ถœ"๋˜๋Š” "์ž…๋ ฅ"์‹œ ํ‚ค๋ณด๋“œ ๋‹ซ๊ธฐ๋ฅผ ์กฐ์‚ฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํƒ์ƒ‰ ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ๋•Œ ํ‚ค๋ณด๋“œ๊ฐ€ ์—ด๋ ค ์žˆ์œผ๋ฉด ์ž๋™์œผ๋กœ ๋‹ซํž™๋‹ˆ๋‹ค. ์˜ค๋ฒ„๋ ˆ์ด์™€ ๊ด€๋ จํ•˜์—ฌ์ด ๋™์ž‘์„ ๋‹ค์‹œ ๊ฒ€ํ† ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ชจ๋‹ฌ์„ ์—ด๊ณ  ํ‚ค๋ณด๋“œ๋ฅผ ์—ด์–ด ๋‘˜ ๋•Œ ๋งŽ์€ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ActionSheet, Alert, Loading, Modal, Popover, Picker ๋ฐ Toast๋Š” ๋ชจ๋‘ ์ƒˆ ์ž‘์—…์˜ ์‹œ์ž‘ (์˜ˆ : ์‹œ๊ฐ„ ์„ ํƒ) ๋˜๋Š” ์™„๋ฃŒ๋œ ์ž‘์—…์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ (์–‘์‹ ๋“ฑ์˜ ์ œ์ถœ ๋˜๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ)์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฒ„๋ ˆ์ด๋ฅผ ์—ฌ๋Š” ๊ฒฝ์šฐ ํ‚ค๋ณด๋“œ๋ฅผ ๋‹ซ๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

chats.html

<ion-footer *ngIf="send.load_spinner==false" class="backgound_send_message">
<ion-toolbar>

<textarea *ngIf="Record.StartRecordGo==false" [(ngModel)]="you_comment" (keydown)="handleKeyDown($event)" (focus)="scrollTobottom()" placeholder="{{'chats.message' | translate }}"  id="my-textarea0" class="my-textarea" rows="1" autosize></textarea>

    <button ion-button clear large color="primary" *ngIf="send.you_comment.length>0" (click)="SendMessageServer(items)"><ion-icon class="SendMess" ios="ios-send-outline" md="md-send"></ion-icon></button>


</ion-toolbar>
</ion-footer>

chats.ts

SendMessageServer(items) {
    this.text_message_me.push(this.you_comment);
   document.getElementById('my-textarea0').focus(); // The keyboard remains open
}

์ด ์ฝ”๋“œ๋Š” ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค (OPEN KYEBOARD)

<ion-footer>
<ion-toolbar>
<textarea></textarea>
</ion-footer>
</ion-toolbar>

๋†’์ด๋Š” ์ž˜ ๋ณ€ํ•˜์ง€ ๋งŒ ํฌ๊ธฐ๊ฐ€ ๋ณ€ํ•  ๋•Œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

https://forum.ionicframework.com/t/no-documentation-for-scrollassist-autofocusassist-inputblurring-config-settings/88450?u=rohinmohandas

3.2.0์ด ๊ณต๊ฐœ ๋  ๋•Œ๊นŒ์ง€ ์ด๋Ÿฌํ•œ ํ‚ค๋ณด๋“œ ๋ฐ ์ž…๋ ฅ ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ๋ณด์œ ํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‚ค๋ณด๋“œ๊ฐ€ ์ž…๋ ฅ์„ ์ˆจ๊ธฐ๋Š” ๊ฒฝ์šฐ์™€ ๊ด€๋ จ๋œ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

app.component.ts์˜ ๋‹ค์Œ ์ฝ”๋“œ๋Š” iOS์™€ Android ๋ชจ๋‘์—์„œ ํ‚ค๋ณด๋“œ ์œ„์— ๋จธ๋ฌด๋ฅด๋Š” ๋ฐ”๋‹ฅ ๊ธ€ ์ž…๋ ฅ์˜ ์›ํ•˜๋Š” ํšจ๊ณผ๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ Android์˜ ์ƒํƒœ ํ‘œ์‹œ ์ค„ ์˜ค๋ฒ„๋ ˆ์ด ๋™์ž‘์€ ํ‚ค๋ณด๋“œ๊ฐ€ ํ‚ค๋ณด๋“œ ๋†’์ด ์•„๋ž˜์—์žˆ๋Š” ์ž…๋ ฅ ์š”์†Œ๋ฅผ ์ˆจ๊ธฐ๋Š” ๋ฐฉ์‹์— ์˜ํ–ฅ์„์ค๋‹ˆ๋‹ค.

import {Platform} from "ionic-angular";
import {Keyboard} from "@ionic-native/keyboard";
import {StatusBar} from "@ionic-native/status-bar";
import {SplashScreen} from "@ionic-native/splash-screen";

constructor(platform: Platform,public statusBar: StatusBar, public splashScreen: SplashScreen,
                public keyboard: Keyboard) {

        platform.ready().then(() => {
            if (platform.is("ios")) {
                statusBar.overlaysWebView(true);
                statusBar.styleBlackTranslucent();
            }
            splashScreen.hide();
            keyboard.hideKeyboardAccessoryBar(false); // use only on a need basis if accessory bar is needed.
            .
            .
            .

            }

์Šคํฌ๋กค ํ•  ๋•Œ ์ปค์„œ๊ฐ€ ์ด์˜จ ํ—ค๋”๋ฅผ ์ฐจ๋‹จํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
key2
key1

# 7047๋„ ์ˆ˜์ • ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? ionic์ด ์ž…๋ ฅ์„ ์ค‘๋‹จ์‹œํ‚ค๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋ชจ๋ฐ”์ผ์˜ ์ž…๋ ฅ ํ•„๋“œ์—์„œ ์ด๊ฒƒ์ด ์–ด๋ ค์šด ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ?

์ด ๋‚ด ์†”๋ฃจ์…˜์€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

  1. hideKeyboardAccessoryBar ์„ true
this.keyboard.hideKeyboardAccessoryBar(true)
  1. KeyboardAttachDirective.ts ํŒŒ์ผ ์ƒ์„ฑ
import { Directive, ElementRef, Input } from '@angular/core';
import { Content, Platform } from 'ionic-angular';
import { Keyboard } from '@ionic-native/keyboard';
import { Subscription } from 'rxjs/rx';


/**
 * <strong i="15">@name</strong> KeyboardAttachDirective
 * <strong i="16">@description</strong>
 * The `keyboardAttach` directive will cause an element to float above the
 * keyboard when the keyboard shows. Currently only supports the `ion-footer` element.
 *
 * ### Notes
 * - This directive requires [Ionic Native](https://github.com/driftyco/ionic-native)
 * and the [Ionic Keyboard Plugin](https://github.com/driftyco/ionic-plugin-keyboard).
 * - Currently only tested to work on iOS.
 * - If there is an input in your footer, you will need to set
 *   `Keyboard.disableScroll(true)`.
 *
 * <strong i="17">@usage</strong>
 *
 * ```html
 * <ion-content #content>
 * </ion-content>
 *
 * <ion-footer [keyboardAttach]="content">
 *   <ion-toolbar>
 *     <ion-item>
 *       <ion-input></ion-input>
 *     </ion-item>
 *   </ion-toolbar>
 * </ion-footer>
 * ```
 */

@Directive({
    selector: '[keyboardAttach]'
})
export class KeyboardAttachDirective {
    @Input('keyboardAttach') content: Content;

    private onShowSubscription: Subscription;
    private onHideSubscription: Subscription;

    private attachTime = 0;

    constructor(
        private elementRef: ElementRef,
        private platform: Platform,
        private keyboard: Keyboard
    ) {
        if (this.platform.is('cordova') && this.platform.is('ios')) {
            this.onShowSubscription = this.keyboard.onKeyboardShow().subscribe(e => this.onShow(e));
            this.onHideSubscription = this.keyboard.onKeyboardHide().subscribe(() => this.onHide());
        }
    }

    ngOnDestroy() {
        if (this.onShowSubscription) {
            this.onShowSubscription.unsubscribe();
        }
        if (this.onHideSubscription) {
            this.onHideSubscription.unsubscribe();
        }
    }

    private onShow(e) {
        let keyboardHeight: number = e.keyboardHeight || (e.detail && e.detail.keyboardHeight);

        if(this.attachTime > 1){
            if(
            keyboardHeight == 313 ||
            keyboardHeight == 258 ||
            keyboardHeight == 216 ||
            keyboardHeight == 253 ||
            keyboardHeight == 226 ||
            keyboardHeight == 271 ||
            keyboardHeight == 216 ||
            keyboardHeight == 264){
                this.setElementPosition(0)
            }else{
                if(this.attachTime > 2){
                    this.setElementPosition(0)
                }else{
                    this.setElementPosition(keyboardHeight);
                }
            }
        }else{
            this.setElementPosition(keyboardHeight);
        }
        this.attachTime ++
    };

    private onHide() {
        this.setElementPosition(0);
        this.attachTime = 0
    };

    private setElementPosition(pixels: number) {
        this.elementRef.nativeElement.style.paddingBottom = pixels + 'px';
        this.content.getScrollElement().style.marginBottom = (pixels + 44) + 'px';
        this.content.scrollToBottom()
    }
}
  1. ์‚ฌ์šฉํ•˜๋‹ค
<ion-header (touchstart)="closeKeyboard()"></ion-header>

...

<ion-content #content (touchstart)="closeKeyboard()"></ion-content>

...

<ion-footer [keyboardAttach]="content" class="messagebar">
    <ion-toolbar no-border>
        <div class="toolbar-inner">
            <div #inputer style="-webkit-user-select: auto;padding:5px;font-size:16px; min-height:1.5em; width:100%;border:1px solid #ccc;background-color:#fff;" contenteditable="plaintext-only" (keyup)="keyup($event)" (focus)="onFocus($event)" (blur)="onBlur($event)"></div>
            <button ion-button small (tap)="send()" [disabled]="!msgContent.length">ๅ‘้€</button>
        </div>
    </ion-toolbar>
</ion-footer>
  1. XXXPage.ts ์— ๋ช‡ ๊ฐ€์ง€ ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€
    onBlur(event) {
        if (this.keyboardOpen) {
            event.target.focus()
        }
    }

    keyup(event){
        this.msgContent = event.target.innerText
    }

    onFocus(event) {
        this.keyboardOpen = true
    }

    closeKeyboard() {
        this.keyboardOpen = false
        this.keyboard.close()
    }

perview.gif ๋งํฌ

preview.mov ๋งํฌ

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ ํ•˜์ง€๋งŒ Android์—์„œ ํ…Œ์ŠคํŠธ ํ–ˆ์Šต๋‹ˆ๊นŒ? ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@aspidvip์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
@ lh4111 ๋‹น์‹ ์˜ ํ•ด๊ฒฐ์ฑ…์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํ—ค๋” ์•„๋ž˜์˜ ์ž…๋ ฅ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๊นŒ?

@kitkimwong ๋‚˜๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์›์น™์ด ๋น„์Šทํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฟก ๋นต๋€จ

  1. ์‚ฌ์šฉ ๋ฐฉ๋ฒ• this.keyboard.hideKeyboardAccessoryBar(true) ์˜ํ•ด ์ œ๊ณต ion-native/keyboard ํ–‰
    ํ‚ค๋ณด๋“œ ์ปค๋ฒ„ Page
  2. ์ปค์„œ๊ฐ€ ์ž…๋ ฅ์— ์ดˆ์ ์„ ๋งž์ถ”๋ฉด ํ‚ค๋ณด๋“œ๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ion-content padding-bottom์„ ์„ค์ •ํ•˜์—ฌ ion-footer ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์ œ ์˜์–ด ์‹ค๋ ฅ์ด ์ข‹์ง€ ์•Š์•„ ์ดํ•ดํ•ด ์ฃผ์…จ์œผ๋ฉดํ•ฉ๋‹ˆ๋‹ค

์–ด์จŒ๋“  ์—ฌ๊ธฐ ์ฒซ ๋ฒˆ์งธ ์Šค๋ ˆ๋“œ์—์„œ ์–ธ๊ธ‰ ํ•œ WKWebView ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด UIWebView์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์˜๊ฒฌ์ž…๋‹ˆ๊นŒ?

@ jgw96 ๋ฐฉ๊ธˆ iOS ์žฅ์น˜์—์„œ WKWebView๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋ฅผ ์œ„ํ•ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ ํ•„๋“œ๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ํ‚ค๋ณด๋“œ ์œ„์— ์ž˜ ์œ ์ง€๋˜์ง€ ์•Š๊ณ  ์ง€์—ฐ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งˆ์น˜ ๋์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์•Œ๋ ค์ง„ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ?

์ด iOS ์ „์šฉ์ธ๊ฐ€์š”? Android์—์„œ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

๋…น์Œ:
https://1drv.ms/v/s!AqSDIyRRHLbYazFGbIPhOGLC4sA

Cordova CLI : 6.4.0
Ionic Framework ๋ฒ„์ „ : 3.0.1
Ionic CLI ๋ฒ„์ „ : 2.1.14
Ionic App Lib ๋ฒ„์ „ : 2.1.7
Ionic App Scripts ๋ฒ„์ „ : 1.3.0
ios-deploy ๋ฒ„์ „ : 1.9.1
ios-sim ๋ฒ„์ „ : 5.0.12
์šด์˜์ฒด์ œ : macOS Sierra
๋…ธ๋“œ ๋ฒ„์ „ : v7.4.0
Xcode ๋ฒ„์ „ : Xcode 8.3.2 ๋นŒ๋“œ ๋ฒ„์ „ 8E2002

๋‚ด ํ…Œ์ŠคํŠธ์—์„œ @manucorporat FYI ์•ˆ๋…•ํ•˜์„ธ์š”. ์œ„์˜ ๊ฒŒ์‹œ๋ฌผ ๋ฐ ๋…น์Œ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ €ํฌ ์•ฑ์€ ๋ณธ์งˆ์ ์œผ๋กœ ์ฑ„ํŒ… ์•ฑ์ด๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”์ง€ ์•„๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@ jgw96 @manucorporat ์ด ํ…Œ์ŠคํŠธ์˜ ์ƒํƒœ์™€ brnach ์ˆ˜์ • ์‚ฌํ•ญ์ด ์–ธ์ œ ํ”„๋กœ๋•์…˜์— ์ ์šฉ ๋ ์ง€์— ๋Œ€ํ•ด ์˜๊ฒฌ์„ ๋ณด๋‚ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๋ฌด์—‡์„ํ•ด์•ผํ• ๊นŒ์š”? ์ •๋ง ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@ jgw96 ์ด ๋ฌธ์ œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? 3.3.0 ๋งˆ์ผ์Šคํ†ค์„ ๋†“์นœ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ‚ค๋ณด๋“œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ณต์‹์ ์ธ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ? Ionic 1 ์ดํ›„๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์€ ๊ณ ํ†ต์Šค๋Ÿฝ๊ณ  ํ‚ค๋ณด๋“œ๋งŒํผ ์ค‘์š”ํ•œ ๊ฒƒ์— ๋Œ€ํ•œ ๊ณต์‹์ ์ธ ์ˆ˜์ • ์‚ฌํ•ญ์€ ์•„์ง ์—†์Šต๋‹ˆ๋‹ค.

@nuvoPoint LoL, ํ‚ค๋ณด๋“œ ๋ฌธ์ œ๋Š” ๊ฑฐ์˜ 1.5 ๋…„ ๋™์•ˆ ์ง€์†๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  1. https://github.com/ionic-team/ionic/issues/6228
  2. https://github.com/ionic-team/ionic/issues/5432

๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ๋‹จ์ง€ ๋ฌธ์ œ๋ฅผ ์ž ๊ธ‰๋‹ˆ๋‹ค .. LOL ...
๊ทธ๋ž˜์„œ .. 1 ๋…„ ์ „ ํ‚ค๋ณด๋“œ ๋ฌธ์ œ๋กœ ionic์„ ํฌ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ์€ ํ‚ค๋ณด๋“œ๊ฐ€ ๊ณ ์ณ ์กŒ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ๋กœ ๋Œ์•„ ์™”์ง€๋งŒ ๋ณด์‹œ๋‹ค์‹œํ”ผ ์˜ฌํ•ด๋Š” ์•„๋ฌด๋Ÿฐ ์ง„์ „์ด ์—†์Šต๋‹ˆ๋‹ค. :)

๋‹จ์ˆœํ•œ ์•ฑ ์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ ๋ผํ•ด๋„ ๊ณต์‹์ ์ธ ์ˆ˜์ •์„ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™๋‹ค !! ์ฑ„ํŒ… ์•ฑ์„ ๊ตฌ์ถ•ํ•˜๋ ค๋Š” ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์žƒ๊ฒŒ๋ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ ์ƒ์ž ๋Š” ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.์ด ๋ฌธ์ œ๋Š” IONIC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ์ •๋ณด ์•ฑ ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ์ด๊ฒƒ์ด ์ด์˜จ์˜ ์œ„์น˜ ...? LOL. ๋ชจ๋ฅด๊ฒ ์–ด์š”.

ํฌ๋Ÿผ์—์„œ ํ† ๋ก ์„ ๋ณด๋ฉด ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์ผํ•œ ๋ฌธ์ œ์™€ ๋‹ต๋ณ€์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
Ionic์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฑ„ํŒ… ์•ฑ๊ณผ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ๋„ค์ดํ‹ฐ๋ธŒ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

https://forum.ionicframework.com/t/about-to-give-up-with-ionic-3-simple-native-like-chat-page-not-possible/87548

์—ฌ๋Ÿฌ๋ถ„, ํ‚ค๋ณด๋“œ ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ด๋ฉฐ ํ…Œ์ŠคํŠธํ•˜๋ ค๋Š” ๊ฒฝ์šฐ wk ์šฉ cordova ํ”Œ๋Ÿฌ๊ทธ์ธ์— ํ•ด๋‹น ๋ถ„๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

cordova plugin add https://github.com/driftyco/cordova-plugin-wkwebview-engine.git#keyboard-fixes --save

๋‹ค์Œ์€ ํ˜„์žฌ ์ˆ˜์ • ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. https://github.com/ionic-team/cordova-plugin-wkwebview-engine/pull/131

์„ค์น˜๋ฅผ ์‹œ๋„ํ•˜๊ณ  ๋” ๋‚˜์€์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ํŒ€์€ ํ”ผ๋“œ๋ฐฑ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

ํŽธ์ง‘ :

@AmitMY ํ”ผ๋“œ๋ฐฑ์„ ์–ด๋–ป๊ฒŒ ๊ฒŒ์‹œ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ด ์Šค๋ ˆ๋“œ์—์„œ?

๋‚ด iOS ์žฅ์น˜์—์„œ WKWebView๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋ฅผ ์œ„ํ•ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ด์Šˆ:
์ž…๋ ฅ ํ•„๋“œ๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ํ‚ค๋ณด๋“œ ์œ„์— ์ž˜ ์œ ์ง€๋˜์ง€ ์•Š๊ณ  ์ง€์—ฐ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งˆ์น˜ ๋์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์•Œ๋ ค์ง„ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ?

๋…น์Œ:
https://1drv.ms/v/s!AqSDIyRRHLbYazFGbIPhOGLC4sA

๊ธ€๋กœ๋ฒŒ ํŒจํ‚ค์ง€ :
@ ionic / cli-utils : 1.2.0
Cordova CLI : 7.0.1
Ionic CLI : 3.2.0

๋กœ์ปฌ ํŒจํ‚ค์ง€ :
@ ionic / app-scripts : 1.3.7
@ ionic / cli-plugin-cordova : 1.2.1
@ ionic / cli-plugin-ionic-angular : 1.2.0
Cordova ํ”Œ๋žซํผ : ios 4.4.0
Ionic Framework : ์ด์˜จ ๊ฐ๋„ 3.0.1

์ฒด๊ณ„:
๋…ธ๋“œ : v7.4.0
OS : macOS Sierra
Xcode : Xcode 8.3.2 ๋นŒ๋“œ ๋ฒ„์ „ 8E2002
ios-deploy : 1.9.1
ios-sim : 5.0.12

@jrmcdona ์—ฌ๊ธฐ์— ํ”ผ๋“œ๋ฐฑ์„ ๊ฒŒ์‹œํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. @manucorporat ๋Š” ๊ทธ๊ฐ€ ํ•  ์ˆ˜์žˆ์„ ๋•Œ ๊ทธ๊ฒƒ์„ ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค
๊ฐ€๋Šฅํ•œ ํ•œ ์ „๋ฌธ์ ์œผ๋กœ ์œ ์ง€ํ•˜๋„๋ก ๋…ธ๋ ฅํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋น„๋””์˜ค๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋น„๋””์˜ค์—์„œ ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ์„ค๋ช…ํ•˜์‹ญ์‹œ์˜ค (๋งค๋ฒˆ ๋…นํ™”๋ฌผ์„ ๋ณด์ง€ ์•Š๊ณ ๋„ ๋ฌธ์ œ๋ฅผ ์ถ”์  ํ•  ์ˆ˜ ์žˆ์Œ).

ํƒญ ๋ฐ ํ‚ค๋ณด๋“œ ์—ด๊ธฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ํฌ๋ง์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@ Floyd1256 ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๋ชจ๋“  ์ •๋ณด๋ฅผ ์—ฌ๊ธฐ์— ์—ฐ๊ฒฐํ•˜์‹ญ์‹œ์˜ค. ์ด ์ „์ฒด ์Šค๋ ˆ๋“œ๋Š” ์•„๋งˆ๋„ ๋‹ค์Œ ์ฃผ ๋ง์— ๊ฒ€ํ†  ๋  ๊ฒƒ์ด๋ฉฐ ํ”ผ๋“œ๋ฐฑ์— ๋”ฐ๋ผ ์ˆ˜์ • ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ionic ์•ฑ์— ์ฑ„ํŒ… ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ cordova-plugin-wkwebview-engine.git # keyboard-fixes๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ํฐ ๊ฐœ์„ ์ด ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ธฐ๋ณธ ํ‚ค๋ณด๋“œ ๊ด€๋ฆฌ์™€ ๋น„๊ตํ•  ๋•Œ ํ•  ์ˆ˜์—†๋Š” ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚ด ์ฐธ์กฐ๋Š” ๋‚ด ์ „ํ™”์˜ ๋ฉ”์‹œ์ง• ๊ธฐ๋Šฅ์ด์ง€๋งŒ ๊ฐ€์žฅ ์ž˜ ์•Œ๋ ค์ง„ ์ฑ„ํŒ… ์•ฑ์˜ ๊ฒฝ์šฐ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
์ƒˆ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํด๋ฆญํ•˜๋ฉด ํ‚ค๋ณด๋“œ๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ณ  ํ•˜๋‹จ ๊ณ ์ • ์ž…๋ ฅ ํ…์ŠคํŠธ์™€ ๋งˆ์ง€๋ง‰ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘ธ์‹œํ•˜์ง€๋งŒ ์ƒ๋‹จ ๊ณ ์ • ํ—ค๋”๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
ํ‘ธ์‹œ ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ๋งค๋„๋Ÿฝ๊ณ  ์ƒˆ ๋ฉ”์‹œ์ง€๋ฅผ ์ž…๋ ฅํ•ด๋„ ๋งˆ์ง€๋ง‰ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ์–ด๋–ค ์ „ํ™”๋กœ๋“  SMS๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ณด๋‚ด์‹ญ์‹œ์˜ค.

Android, iOS ๋ฐ Windows ์žฅ์น˜์—์„œ ์ด์˜จ ํ‚ค๋ณด๋“œ๋กœ ๋™์ผํ•œ ๋™์ž‘์„ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
ํ˜„์žฌ ์ด์˜จ ํ‚ค๋ณด๋“œ์—์„œ ํ‘ธ์‹œ ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ๋ถˆ์•ˆ์ •ํ•˜๊ณ  ํ‚ค๋ณด๋“œ๋Š” ํ•˜๋‹จ ๊ณ ์ • ์ž…๋ ฅ์„ ํ‘ธ์‹œํ•˜์ง€๋งŒ ๋งˆ์ง€๋ง‰ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฎ์Šต๋‹ˆ๋‹ค (๋ชจ๋“  ์žฅ์น˜์—์„œ).
ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ด์˜จ ๋ฐ”๋‹ฅ ๊ธ€์— ํ…์ŠคํŠธ ์ž…๋ ฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค.
๋ฌธ์ œ๋Š” ํฌ์ง€ ๋งŒ ์ตœ์ข… ์‚ฌ์šฉ์ž๋Š” ํ‚ค๋ณด๋“œ๋ฅผ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ๋ฐ›์•„ ๋“ค์ผ ์ˆ˜ ์—†์œผ๋ฉฐ ๊ธฐ๋ณธ ํ‚ค๋ณด๋“œ์™€์˜ ์ฐจ์ด๋Š” ๋…ธ๊ณจ์ ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ›Œ๋ฅญํ•œ ์ด์˜จ ํ”„๋ ˆ์ž„ ์›Œํฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ๋•Œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“ค๊ณ  ํ‚ค๋ณด๋“œ๊ฐ€ ํƒญ ์œ„๋กœ ๋‚˜ํƒ€๋‚  ๋•Œ ํฌ๊ธฐ ์กฐ์ •์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค! ๋˜๋Š” ํ‚ค๋ณด๋“œ๊ฐ€ ํ‘œ์‹œ ๋  ๋•Œ ํƒญ ๋ชจ์–‘์„ ๋น„ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ๊ทผ์— ์˜†์œผ๋กœ ์Šคํฌ๋กค ์‚ฌ๋ผ์ง

๋ฉ”์ธ ์›น๋ทฐ ์œ„์— ์ค‘์ฒฉ ์›น๋ทฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํฅ๋ฏธ๋กœ์šด ๋””์ž์ธ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ์ž๋Š” UI๋ฅผ 2 ๊ฐœ์˜ ๋ ˆ์ด์–ด๋กœ ๋ถ„๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ๋ฉ”์ธ ์ฝ˜ํ…์ธ  ์šฉ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ํ‚ค๋ณด๋“œ์™€ ๋™๊ธฐํ™”ํ•ด์•ผํ•˜๋Š” UI ์šฉ์ž…๋‹ˆ๋‹ค.

@ Khalid-Nowaf๋Š” ํ‚ค๋ณด๋“œ๊ฐ€ ์˜ฌ๋ผ๊ฐˆ ๋•Œ์ด ๋””์ž์ธ์—์„œ ๋ฉ”์ธ ๋ทฐ๋ฅผ ๋ฐ€์–ด ๋ถ™์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฑ„ํŒ… ์‹œ๋‚˜๋ฆฌ์˜ค ๋˜๋Š” SMS์—์„œ ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋ฅผ ์€ํํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด iOS SMS์—์„œ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ…์ŠคํŠธ ์ƒ์ž์™€ ํ•จ๊ป˜ ๋งค์šฐ ๋งค๋„๋Ÿฝ๊ฒŒ ํ‘ธ์‹œ๋˜์–ด ํ•ญ์ƒ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅ ํ•œ ํ›„ ํ‚ค๋ณด๋“œ๊ฐ€ ๋–จ์–ด์ง€์ง€ ์•Š๊ณ  ๊ณ„์† ์ž…๋ ฅํ•˜๊ณ  ๋‚˜๊ฐˆ ๋•Œ๊นŒ์ง€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ด์˜จ ๋””์ž์ธ์ด iOS์™€ Android๋ฅผ ๋ชจ๋ฐฉํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (ํ•˜์ง€๋งŒ Android๋ฅผ ์‚ฌ์šฉํ•œ ์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— Android์— ๋Œ€ํ•ด ๋งํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ). ๋‚˜๋Š” ๋˜ํ•œ ๊ฐœ๋ฐœ ๊ด€์ ์—์„œ ๊ทธ๊ฒƒ์ด ์ผ์–ด๋‚˜๋„๋ก ๋งŒ๋“œ๋Š” ๋ณต์žก์„ฑ์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅด์ง€๋งŒ ๊ทธ๊ฒƒ์ด ๋” ๊ฐ€๊นŒ์›Œ์ง€๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. WKWebView๋กœ ํฌ๊ฒŒ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ํ‚ค๋ณด๋“œ์˜ ์ฃผ์š” ๋ฌธ์ œ์ธ @jrmcdona ๋Š” ํ‚ค๋ณด๋“œ๋กœ ๋ฐ”๋‹ฅ ๊ธ€์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์Šคํฌ๋กคํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ํ‚ค๋ณด๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์›น ๋ทฐ๊ฐ€ ์„œ๋กœ ์ด๋ฒคํŠธ๋ฅผ ๋ณด๋‚ด๋ ค๊ณ ํ•˜๋ฏ€๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ํฌ๊ธฐ ์กฐ์ • ..etc๋ฅผ ๊ด€๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ์œผ๋ฉฐ ์„œ๋กœ ๋™๊ธฐํ™”ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ํ‚ค๋ณด๋“œ๊ฐ€ webview ์• ๋‹ˆ๋ฉ”์ด์…˜๋ณด๋‹ค ๋น ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ œ๊ฐ€ ์—ฌ๊ธฐ์„œ ๋‹ค๋ฃจ๊ณ  ์žํ•˜๋Š” ๊ฒƒ์€ ๋ฉ”์ธ ๋ทฐ ์œ„์— ๋‘ ๋ฒˆ์งธ ์›น๋ทฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ํ‚ค๋ณด๋“œ๋Š” ๊ทธ๊ฒƒ์„ ๋ฐ€์–ด ์˜ฌ๋ฆด ๊ฒƒ์ด๊ณ , ๋ฉ”์ธ ์›น ๋ทฐ๋Š” "๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์— ์˜์กด"ํ•˜์ง€ ์•Š๊ณ  ์Šคํฌ๋กค ํ•  ์ˆ˜์žˆ๋Š” ์˜ต์…˜์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฉ”์ธ ๋ทฐ๋ฅผ ์Šคํฌ๋กคํ•˜๋Š” ๊ฒƒ์€ ์ด์ œ ๋ฌธ์ œ๊ฐ€๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ์ฑ„ํŒ… ์•ฑ์€ ๋ชจ๋“  ๊ฒƒ์ด ํ•˜๋‚˜์˜ ๋ ˆ์ด์–ด์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํฌ๋Ÿผ์˜ ์ผ๋ถ€๋Š” ํ‚ค๋ณด๋“œ ๋ฌธ์ œ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ˆ˜์ • ํ•œ ํ›Œ๋ฅญํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.
https://github.com/EddyVerbruggen/cordova-plugin-native-keyboard
๋‚˜์œ ์†Œ์‹์€์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์œ ๋ฃŒ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ionic์˜ "๊ณ ์ • ๋œ ํ‚ค๋ณด๋“œ ๋ถ„๊ธฐ"๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์—ฌ์ „ํžˆ ํฐ ๋ฌธ์ œ์™€ ๋‚˜์œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@kitkimwong ์™€์šฐ, ๊ฝค ๋น„์‹ธ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ œ์™ธํ•˜๊ณ ๋Š” ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค (ํŠนํžˆ ์ด์˜จ์ด ๋ฌด๋ฃŒ๋ผ๋Š” ์‚ฌ์‹ค). @manucorporat ๋‹น์‹ ์€ ํ™•์‹คํžˆ ๊ทธ๊ฒƒ์„ ๋ด์•ผํ•ฉ๋‹ˆ๋‹ค

ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ionic ๋ฌธ์„œ์— ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์˜ค๋Š˜ ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ•˜๊ณ  ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋Š”์ง€ ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 200 ๋‹ฌ๋Ÿฌ๋Š” ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๊ธฐ์— ์ผ๋ถ€ ํšŒ์‚ฌ์— ๊ทธ๋ ‡๊ฒŒ ๋น„์‹ธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‘ ์‹œ๊ฐ„์˜ ๊ฐœ๋ฐœ์ž ์‹œ๊ฐ„์ด ๊ทธ ๋น„์šฉ์„ ์ง€๋ถˆ ํ•  ๊ฒƒ์ด๋ฉฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์—†์ด ํ‚ค๋ณด๋“œ๋ฅผ ์—‰๋ง์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐ ๋ช‡ ์‹œ๊ฐ„์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
http://ionicframework.com/docs/native/native-keyboard/ ์˜คํ•ดํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ง€๋ถˆํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ‚ค๋ณด๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.์ด ์ €์žฅ์†Œ๋กœ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐ™์€ ์ฑ„ํŒ… ์•ฑ
  • ์–‘์‹ ๋ฐ ๋งŽ์€ ์ž…๋ ฅ "์–‘์‹ ์ด์˜จ E2E ํ…Œ์ŠคํŠธ"
  • ios ์šฉ wkwebview ** new
  • RTL

์—ฌ๊ธฐ ๋‚ด ๋ฐ๋ชจ ์ค‘ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค



repo ๋งํฌ : https://github.com/Khalid-Nowaf/ionic-keyboard

๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ ํ›„ํ•ด์•ผ ํ•  ๋ชจ๋“  ๊ฒƒ
sh ionic cordova run ios --prod ionic cordova run android --prod

7047

ํ‚ค๋ณด๋“œ ์˜ต์…˜์œผ๋กœ ์‹ค์ œ ์ž…๋ ฅ ํ•„๋“œ๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์•„์ด๋””์–ด์ผ๊นŒ์š”? ๊ทธ๋Ÿฌ๋ฉด ์šฐ๋ฆฌ๋Š” ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด์ง€ ์•Š์€ DOM ๋ Œ๋”๋ง์— ์˜์กดํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ฉฐ ํ‚ค๋ณด๋“œ์— ์ž…๋ ฅ์„ ๋ถ™์ด๋Š” ๊ฒƒ์ด ๊ตฌํ˜„ํ•˜๊ธฐ ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

"๋ง์น˜๊ฐ€ ์žˆ์œผ๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๋ชป์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค"๋ผ๋Š” ์˜›๋ง์ด ๋– ์˜ค๋ฅธ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ „์ฒด์— ๋Œ€ํ•ด ๋‹ค๋ฅด๊ฒŒ ์ ‘๊ทผํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@larssn ์€ ์œ ๋ฃŒ ํ‚ค๋ณด๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ดํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ข‹์€ ์„ ํƒ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@jrmcdona ๊ดœ์ฐฎ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค 100 % ์ž‘๋™ํ•˜๋Š” ์‚ฌ๋‚ด ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์— ๋‚˜๋Š” ํŒŒ์† ๋œ ์—ฌ๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์˜์กดํ•˜๊ฒŒ๋˜์—ˆ๊ณ ์ด๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ์ž‘์€ ์•…๋ชฝ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

@larssn ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ์„ ์ œ์•ˆํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ionic์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์•„์ด๋””์–ด๋ฅผ ์ œ์•ˆํ•œ ๊ฒƒ์€ ๊ทธ ๋””์ž์ธ์ด ์ข‹๊ฒŒ ๋“ค๋ฆฌ๋ฉฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์ดํ•˜๋Š” ์ผ์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ‚ค๋ณด๋“œ ๋ฌธ์ œ์— ๋Œ€ํ•ด ionic ํŒ€์œผ๋กœ๋ถ€ํ„ฐ ํ”ผ๋“œ๋ฐฑ์„๋ฐ›์„ ๋•Œ๊นŒ์ง€-๋ˆ„๊ตฐ๊ฐ€ ์œ ๋ฃŒ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ์— ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ์ด์œ ๋กœ ์ฒ˜์Œ์— ํ‚ค๋ณด๋“œ๋ฅผ ํ‘œ์‹œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์—์žˆ๋Š” ํ† ๊ธ€์„ ํด๋ฆญํ•ด์•ผ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€๊ฐ€๋กœ๋“œ ๋  ๋•Œ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ๋ชจ์ฒ˜๋Ÿผ.

https://github.com/jrmcdona/keyboard-test

๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ•œ ์†”๋ฃจ์…˜ :

  • input ๋Œ€์‹  ion-input

@SoldierCorp ๋‹น์‹ ์€ ์ œ๊ณต๋˜๋Š” WkWebView ํ…Œ์ŠคํŠธ ๋ถ„๊ธฐ ionic์—์„œ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด UIWebView?

@jrmcdona ๊ตฌ์„ฑ ์š”์†Œ์˜ ํ…œํ”Œ๋ฆฟ์—์„œ html ์š”์†Œ ์ž์ฒด.

์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ๋ชจ๋“  ์˜๊ฒฌ๊ณผ ๊ธฐ๋Œ€๋ฅผ ๊ณ ๋ คํ•˜์—ฌ
ํ‚ค๋ณด๋“œ์™€ ์ž…๋ ฅ ํ…์ŠคํŠธ๋ฅผ ํฌํ•จํ•œ ์ „์šฉ ์ฑ„ํŒ… ๊ตฌ์„ฑ ์š”์†Œ? ์ผ๋ฐ˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ์–ด๋ ต๊ณ , ์ •๋ง ํ›Œ๋ฅญํ•ด ๋ณด์ด์ง€๋งŒ ์จ๋“œ ํŒŒํ‹ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋‹ต๋‹ตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

100 % ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ์ง๋ฉด ํ•œ ํŠน์ • ๋ณต์žก์„ฑ์œผ๋กœ ์ธํ•ด ๋‹ฌ์„ฑ ํ•  ์ˆ˜์—†๋Š” ๊ฒฝ์šฐ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์•Œ๋ฉด ์ •๋ง ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@AmitMY @manucorporat WKWebView ํ…Œ์ŠคํŠธ ๋ถ„๊ธฐ์™€ ๊ด€๋ จํ•˜์—ฌ. ๋ณด๋‚ด๊ธฐ๋ฅผ ๋ˆ„๋ฅธ ํ›„ ํ‚ค๋ณด๋“œ๊ฐ€ ๋‹ซํžˆ์ง€ ์•Š์•„์•ผํ•œ๋‹ค๊ณ  ๋ฏฟ์œผ์‹ญ์‹œ์˜ค.
iOS์—์„œ SMS ๋Œ€ํ™” ์ค‘์— ๋ณผ ์ˆ˜์žˆ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด๋Ÿฌํ•œ ๋™์ž‘์„ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํ‚ค๋ณด๋“œ ๋‹ซ๊ธฐ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ‚ค๋ณด๋“œ๊ฐ€ ์œ„์•„๋ž˜๋กœ ํŠ€์ง€ ์•Š๊ณ  ์ฑ„ํŒ… ์‹œ๋‚˜๋ฆฌ์˜ค ์ค‘์— ๋ฉ”์‹œ์ง€๋ฅผ ํ”๋“ค๋ฆด ์ˆ˜ ์žˆ๋„๋ก ์—ด๋ ค ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ด ์ง€์ ์˜ ์ƒํƒœ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํ‚ค๋ณด๋“œ์— ๋Œ€ํ•œ ์ตœ์‹  ๋‰ด์Šค๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ

@jrmcdona ๋งˆ์Šคํ„ฐ ์— ๋ณ‘ํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
[email protected]

์ข‹์•„์š”! ๐Ÿ‘๐Ÿผ

@manucorporat ๊ทธ ๋นŒ๋“œ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด npm์ด [email protected] ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๊นŒ?
๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์œ ํšจํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ…Œ์ŠคํŠธํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ๋นŒ๋“œ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๊ทธ๊ฒƒ์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@jrmcdona ๋Š” npm v ionic-angular versions --json ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์–ด๋–ค ๋ฒ„์ „์ด ๊ฒŒ์‹œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ฟก๋ฟก

npm install ionic-angular<strong i="7">@nightly</strong>

@manucorporat ๊ฐ์‚ฌ
<plugin name="cordova-plugin-wkwebview-engine" spec="^1.1.3" />

๊ทธ๋Ÿฐ ๋‹ค์Œ ์•ผ๊ฐ„์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋„๋ก Angular๋ฅผ 4.1.3์œผ๋กœ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„์ง ํ™ฉ๊ธˆ ์‹œ๊ฐ„๋Œ€๊ฐ€ ์•„์ง ์ค€๋น„๋˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. WKWebView ํ…Œ์ŠคํŠธ ๋ถ„๊ธฐ๋Š” ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฒ„์ „์—์„œ๋Š” ์ž…๋ ฅ ์ƒ์ž๊ฐ€ ์ „ํ˜€ ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ์ด์—†๋Š” ํ‚ค๋ณด๋“œ ๋งŒ. ํ…Œ์ŠคํŠธ ๋ธŒ๋žœ์น˜์—์„œ ํ‚ค๋ณด๋“œ๋Š” ์˜ฌ๋ผ๊ฐ€์ง€ ๋งŒ ์•ฝ๊ฐ„ ์ง€์—ฐ๋ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ ์ž‘์—… ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฌ๋“ ์ง€ ์ž˜ ์ž‘๋™ํ•˜๋Š” ํ‚ค๋ณด๋“œ์˜ ์ž‘์—… ์ €์žฅ์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์•Œ๋ ค์ง„ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ? ์•Œ๋ ค์ง„ ๋ฌธ์ œ ๋ชฉ๋ก์ด ์žˆ์Šต๋‹ˆ๊นŒ?
์ƒˆ๋กœ์šด ์ด์Šˆ๋ฅผ ๊ธฐ๋กํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

์—ฌ๊ธฐ์— ๋น„๋””์˜ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
https://1drv.ms/v/s!AnyXOztVClZYbfswP -UEtaHEU0I

๋‹ค์Œ์€ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

<div class="chat-window-container" style="padding-top:20px">
  <div class="chat-window">
    <div class="message-list">

      <chat-message *ngFor="let message of messages | async" [message]="message">
      </chat-message>

    </div>

    <message-input>

      <div style="flex:1;padding-left:5px;">
        <ion-input [(ngModel)]="draftMessage.text" (keydown.enter)="onEnter($event)" autofocus="" placeholder="Type to chat..." maxlength="2000"></ion-input>
      </div>
      <div (click)="onEnter($event)" style="display:table;width:50px;height:100%">
        <ion-icon name="send" color="primary" class="message-send-icon"></ion-icon>
      </div>
    </message-input>
  </div>
</div>

๋ชจ๋‘ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

@jrmcdona ์˜ˆ, ์•„์ง ์ถœ์‹œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ƒˆ ํ‚ค๋ณด๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ค€๋น„ ์ค‘์ž…๋‹ˆ๋‹ค.

  1. CLI๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
    ```
    npm install -g ionic
2. Make sure you are using ionic-framework nightly or 3.4

3. Make sure you are using the latest WK plugin

4. Remove ionic-keyboard-plugin: **SUPER IMPORTANT STEP!!!!**

5. Install the new keyboard plugin: 
 ```
ionic cordova plugin add https://github.com/ionic-team/cordova-plugin-keyboard --save

์ฆ๊ฑฐ์›€! ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”

์•ˆ๋…•ํ•˜์„ธ์š”.
3.4 ๋ฒ„์ „์€ ์•„์ง ๊ฒŒ์‹œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Nightly ๋ฐ ์ตœ๊ทผ์— ๊ฒŒ์‹œ ๋œ ๋‹ค๋ฅธ ๋ฒ„์ „์€ ์œ ํšจํ•˜์ง€ ์•Š์•„์„œ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฐ ์ƒท๋ณด๊ธฐ

screen shot 2017-06-14 at 7 27 24 pm

@jrmcdona node_module ์„ ์ œ๊ฑฐํ•˜๊ณ  npm install์„ ๋‹ค์‹œ ์‹คํ–‰ ํ•ด ๋ณด์•˜์Šต๋‹ˆ๊นŒ? --save in ionic-angular @ nightly ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ

๊ทธ๋Ÿฌ๋‚˜ 3.4๊ฐ€ ์˜ค๋Š˜ ์ถœ์‹œ ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

@manucorporat UI๊ฐ€ ์—ฌ๊ธฐ์— ๊ฝค ์ข‹์•„

ํ‘œ์‹œ / ์ˆจ๊ธฐ๊ธฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์žฌ์ƒํ•˜๊ธฐ ์œ„ํ•ด ํ‚ค๋ณด๋“œ๋ฅผ ์•ฑ์œผ๋กœ ๊ฐ€์ ธ ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
(์˜ˆ : '@ ionic-native / keyboard'์—์„œ {ํ‚ค๋ณด๋“œ} ๊ฐ€์ ธ ์˜ค๊ธฐ;)

๋ณด๋‚ด๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ํ‚ค๋ณด๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ๋‹ซํžˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. iOS SMS๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ‚ค๋ณด๋“œ๊ฐ€ ์—ด๋ ค ์žˆ์Šต๋‹ˆ๊นŒ?

์—ฌ๊ธฐ ๋…น์Œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
https://1drv.ms/v/s!AnyXOztVClZYcY3vYXiXYaAZNdE

ํ‚ค๋ณด๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž์ฒด์— ์ž…๋ ฅ์„ ํฌํ•จํ•˜๊ณ  ์žฅ์น˜ ์œ ํ˜•์— ๋”ฐ๋ผ ์Šคํƒ€์ผ์„ ์ง€์ •ํ•ด ๋ณธ ์ ์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•˜์‹ญ๋‹ˆ๊นŒ?

์ž˜ ํ–ˆ์–ด์š” ๋งˆ๋ˆ„!

@manucorporat ์ •๋ง ๋Œ€๋‹จํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ํ‚ค๋ณด๋“œ๊ฐ€ ์—ด๋ ค ์žˆ๊ณ  ์ž…๋ ฅ ํ…์ŠคํŠธ๊ฐ€ ํ•˜๋‹จ ๊ณ ์ •๋˜์—ˆ์„ ๋•Œ ๋งˆ์ง€๋ง‰ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ฝ˜ํ…์ธ ๋ฅผ ํ‘ธ์‹œํ•˜๋Š” ์˜ต์…˜ (ํ—ค๋” ์ œ์™ธ)์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ‚ค๋ณด๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋ ค๋ฉด ์–ด๋–ค ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

@aspidvip Manu๋Š” ๋ช‡ ๊ฐœ์˜ ๊ฒŒ์‹œ๋ฌผ์„ ๋‹ค์‹œ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋ณต์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

CLI๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
npm install -g ionic
๋ฐค๋งˆ๋‹ค ์ด์˜จ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

์ตœ์‹  WK ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

ionic-keyboard-plugin ์ œ๊ฑฐ : SUPER IMPORTANT STEP !!!!

์ƒˆ ํ‚ค๋ณด๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

ionic cordova ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€ https://github.com/ionic-team/cordova-plugin-keyboard --save

์ƒˆ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ‚ค๋ณด๋“œ์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํ‚ค๋ณด๋“œ๊ฐ€ div์— ์ž์‹์œผ๋กœ ์ถ”๊ฐ€๋˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. ~

~ ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”Œ๋Ÿฌ๊ทธ์ธ Google์ง€๋„์˜ ์ž‘์—…

ํ‚ค๋ณด๋“œ ์ž‘์—… ์ง„ํ–‰ ์ƒํ™ฉ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

ํ™˜์ƒ์ ์ธ ์ž‘ํ’ˆ @manucorporat . ๋ฐฉ๊ธˆ 3.2์—์„œ 3.5 ์•ผ๊ฐ„ (@ 3.5.3-201707261447)์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ๋Š”๋ฐ ๋‚ด ์•ฑ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์–‘์‹์—์„œ ์˜๋„ ํ•œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด์ œ์ด ๋ชจ๋“  ์ž‘์—…์„ ๋ณด์—ฌ์ฃผ๋Š” ์•ฑ ๋ฐ๋ชจ๋ฅผ ๊ฒŒ์‹œํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ์ฃผ๋ง ๋™์•ˆ ๋…ธ๋ ฅํ•˜๊ณ  ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@manucorporat์˜ ๋ชจ๋“  ์ž‘์—…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! (๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ํ…Œ์ŠคํŠธ ํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค๋„).

@ Peege151 ๋‚˜๋Š” ์ด๊ฒƒ์˜ ์•ฑ ๋ฐ๋ชจ์— ํ™•์‹คํžˆ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฑ„ํŒ…์„ ์œ„ํ•ด ๋‚ด ์•ฑ์— ํ‚ค๋ณด๋“œ๋ฅผ ํ†ตํ•ฉํ•˜๋Š” ์‹œ์ ์— ์ด๋ฅด๋ €์œผ๋ฏ€๋กœ ์ค€๋น„๊ฐ€๋˜๋ฉด ์ฒ ์ €ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์—ฌ๊ธฐ๋กœ ๋‹ค์‹œ๋ณด๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ Peege151 ์•ฑ ๋ฐ๋ชจ๋ฅผ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

์ข‹์•„, ์ด๊ฒƒ์€ ์ถฉ๊ฒฉ์œผ๋กœ ์˜ฌ ์ˆ˜ ์žˆ์ง€๋งŒ ์•„์ง Ionic 2.2.1์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํ˜„์žฌ๋กœ์„œ๋Š” ๊ฐ๋‹นํ•  ์ˆ˜์—†๋Š” ์ƒˆ๋กœ์šด ๋ฒ„๊ทธ๊ฐ€ ๋„์ž… ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ด https://github.com/driftyco/cordova-plugin-wkwebview-engine.git#keyboard -fixes๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ iOS์—์„œ "๋” ๋งŽ์€ ์ž‘์—…์ด ์‹คํ–‰ ๋œ ํ›„ ์˜ˆ์•ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์—ฌ์ „ํžˆ ์•ฑ์ด ์ถฉ๋Œ ํ• ๊นŒ๋ด ๊ฑฑ์ •๋ฉ๋‹ˆ๋‹ค. .

Ionic 2.2.1๊ณผ ํ•จ๊ป˜ https://github.com/driftyco/cordova-plugin-wkwebview-engine.git ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ค ๊ธฐํšŒ?

๊ทธ๋ž˜์„œ Ionic 2.2.1๊ณผ ํ•จ๊ป˜์ด ํ”Œ๋Ÿฌ๊ทธ์ธ 1.1.3์˜ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค๋ฅผ ์‹œ๋„ํ•˜๊ณ  github repo์˜ ์ง€์นจ์— ๋”ฐ๋ผ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ionic-plugin-keyboard๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค ( @manucorporat ๊ฐ€ ๊ทธ์˜ ์˜๊ฒฌ์—์„œ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค)- ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ npm ์„ค์น˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์•ฑ์„ ๋นŒ๋“œํ•˜๊ณ  ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.
iOS ๋ฒ„์ „ 10 ์ด์ƒ์ด ์„ค์น˜๋œ iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ์˜ˆ์ƒ๋Œ€๋กœ ๋ฌธ์ œ์—†์ด ์ž‘๋™ํ•˜๋ฉฐ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์‹ค์ œ ์ „ํ™”์—์„œ ์‹œ๋„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (์ด์ „์—๋Š” ์—ฌ๊ธฐ์—์„œ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•  ๋•Œ ๋‚ด ์•ฑ์ด ์ถฉ๋Œํ–ˆ์Šต๋‹ˆ๋‹ค https://stackoverflow.com/questions/36706398/in-ionic-2-how-to-float-an-element-above- ํ‚ค๋ณด๋“œ๊ฐ€ ํ‘œ์‹œ ๋  ๋•Œ ํ‚ค๋ณด๋“œ ํ‘œ์‹œ / 36804830 # 36804830)
์‚ฌ๋ผ์ง€๋Š” ํ‚ค๋ณด๋“œ์— ๋Œ€ํ•œ ํŒ, ์ด๊ฒƒ์„ ๋ฒ„ํŠผ์— ์ถ”๊ฐ€
(mousedown)="$event.preventDefault()"

ํฌํ•จ ๋œ config.xml

<feature name="CDVWKWebViewEngine">
  <param name="ios-package" value="CDVWKWebViewEngine"/>
</feature>
<plugin name="cordova-plugin-wkwebview-engine" spec="~1.1.3"/>
<plugin name="cordova-plugin-keyboard" spec="https://github.com/ionic-team/cordova-plugin-keyboard"/>
<allow-navigation href="http://localhost:8080/*"/>

๋ˆ„๊ตฌ๋“ ์ง€ ๋„์šธ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์„ธ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
1- ionic-plugin-keyboard๋ฅผ ์ œ๊ฑฐํ•œ ํ›„์—๋„ Android์—์„œ ๊ณ„์† ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?
2- <allow-navigation href="http://localhost:8080/*"/> ๋งž์Šต๋‹ˆ๊นŒ? localhost : 8080 ?
3- config.xml์—์„œ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

<feature name="Keyboard">
  <param name="ios-package" onload="true" value="IonicKeyboard"/>
</feature>

Android์— ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ thiw๊ฐ€ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ionic config.xml์—์„œ platform name = "android"ํƒœ๊ทธ์— ๋‹ค์Œ ํ–‰์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

<platform name="android"> 
  <edit-config file="AndroidManifest.xml" mode="merge"    target="/manifest/application/activity"> <activity android:windowSoftInputMode="adjustPan" /></edit-config>
  ...the rest of the android configs...
</platform>

์ด๋ ‡๊ฒŒํ•˜๋ฉด ํ‚ค๋ณด๋“œ๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ๋ฐ€์–ด ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์ฝ˜ํ…์ธ ์— ํ‚ค๋ณด๋“œ๋ฅผ ๊ฐ„๋‹จํžˆ ์˜ค๋ฒ„๋ ˆ์ดํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋™์ž‘์€ iOS ํ‚ค๋ณด๋“œ์™€ ๋™์ผํ•˜๊ฑฐ๋‚˜ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@Jatapiaro ๋ณด๊ธฐ ํ•˜๋‹จ์— ์ž…๋ ฅ์ด์žˆ์„ ๋•Œ ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ํ‚ค๋ณด๋“œ๊ฐ€์ด๋ฅผ ์ˆจ๊ธฐ๊ณ  ์ž…๋ ฅ์ค‘์ธ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Ionic์ด ์ฑ„ํŒ… ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๊ณณ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ œ๋Œ€๋กœ ํ•  ์ˆ˜ ์—†์—ˆ๊ณ  ๋ชจ๋“  ๊ฒŒ์‹œ๋ฌผ๊ณผ ๋Œ“๊ธ€์—์„œ ๋ช‡ ๋…„ ๋™์•ˆ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ๋‹ค ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. ์ œ ๊ฐœ์ธ์ ์ธ ์˜๊ฒฌ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์„ ์ •๋ง๋กœ ๋„์šธ ์ˆ˜์žˆ๋Š” ios์™€ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ionic ์šฉ ์ƒ˜ํ”Œ ์ž‘๋™ ์ฑ„ํŒ… ์•ฑ์ด ์žˆ๋‹ค๋ฉด.

@jrmcdona https://github.com/EddyVerbruggen/cordova-plugin-native-keyboard ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ ?

์˜ˆ, ์‹ค์ œ๋กœ ์šฐ๋ฆฌ๋Š” ๊ทธ ๋น„์šฉ์„ ์ง€๋ถˆํ–ˆ๊ณ  ๊ฝค ์ข‹์•˜์Šต๋‹ˆ๋‹ค! ๊ทธ๊ฒƒ์€ ๊ทธ๊ฒƒ์„ ๊ฐ๋‹นํ•  ์ˆ˜์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„์œ„ํ•œ ์ตœ์„ ์˜ ๊ธธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๋‚ด ๊ฒฝํ—˜์—.

EddyVerbruggen ํ‚ค๋ณด๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์–ด๋”˜๊ฐ€์— Max Lynch๋Š”์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ Ionic ์ฑ„ํŒ… ํŒจํ‚ค์ง€์˜ ์ผ๋ถ€๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ ์Šค๋ ˆ๋“œ์—์„œ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋ฌผ์—ˆ๊ณ  ๊ทธ์—๊ฒŒ๋„ ํŠธ์œ—ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‘๋‹ต์„๋ฐ›์ง€ ๋ชปํ•จ ์ฑ„ํŒ… ํŒจํ‚ค์ง€๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ธ ์ง€ ํ•œ์ฐธ ๋˜์—ˆ์œผ๋‹ˆ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์„์ง€๋„ ๋ชจ๋ฅด๊ฒ ๋„ค์š” ...

๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ธฐ์–ตํ•œ๋‹ค๋ฉด Ionic์ด ์—…๋ฐ์ดํŠธ / ์ƒˆ ํ‚ค๋ณด๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ผ์ฃผ์ผ ์ „์— ํŠธ์œ„ํ„ฐ ์–ด๋”˜๊ฐ€์—์„œ ๋ดค๋‹ค๋ฉด ... ๋‚ด๊ฐ€ ํ‹€๋ฆฌ์ง€ ์•Š์•˜๋‹ค๋ฉด ์ง„์ •ํ•˜๊ณ  ๊ธฐ๋‹ค๋ฆฌ์„ธ์š”.

์•ˆ๋…•ํ•˜์„ธ์š” ์ €๋Š” IONIC ํ”„๋กœ์ ํŠธ v1์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜ ๋ฒ„ํŠผ์ด ๋•Œ๋•Œ๋กœ ์œ ํšจํ•˜์ง€ ์•Š์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋žซ๋™์•ˆ ์ €๋ฅผ ๊ดด๋กญ ํ˜”์Šต๋‹ˆ๋‹ค. ๋„์›€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@miaozhenkun ์ด ์ €์žฅ์†Œ๋Š” Ionic v3 + ์šฉ์ด๋ฉฐ, v1์˜ ๊ฒฝ์šฐ https://github.com/ionic-team/ionic-v1์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

@astec ๋‹น์‹ ์€ ์ค‘๊ตญ์ธ์ž…๋‹ˆ๊นŒ๏ผŸ ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

ํ‚ค๋ณด๋“œ์— ion-textbar์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

<ion-card class="cards " > <div class="relative"> <div class="image_container"> <img class="imageFull" src="http://via.placeholder.com/200x200" /> </div> <ion-row class=" absolute bottom0 "> <ion-item> <ion-textarea placeholder="Message..." > </ion-textarea> </ion-item> </ion-row> </div> </ion-card>

์œ„ ์นด๋“œ ๋ชฉ๋ก์„ ์•„๋ž˜ CSS๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
.์ƒ๋Œ€์ ์ธ{
์œ„์น˜ : ์ƒ๋Œ€์  ! ์ค‘์š”ํ•œ;
}
.์ˆœ์ˆ˜ํ•œ{
์œ„์น˜ : ์ ˆ๋Œ€ ! ์ค‘์š”ํ•œ;
}
.bottom0 {
ํ•˜๋‹จ : 0;
}

ํ…์ŠคํŠธ ์˜์—ญ์„ ํด๋ฆญํ•˜๋ฉด ํ‚ค๋ณด๋“œ๊ฐ€ ์—ด๋ฆฌ์ง€ ๋งŒ ์š”์†Œ๋กœ ์Šคํฌ๋กค๋˜์ง€๋Š” ์•Š์ง€๋งŒ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ…์ŠคํŠธ ์˜์—ญ์œผ๋กœ ์Šคํฌ๋กค๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด์˜จ ํ…์ŠคํŠธ ์˜์—ญ์˜ ๋ถ€๋ชจ์— ๋Œ€ํ•ด ์ƒ๋Œ€ ์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ด€์ฐฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์œ„์น˜ ์ƒ๋Œ€๊ฐ€์žˆ๋Š” ์ž‘์—… ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์–˜๋“ค ์•„!
๋ˆ„๊ตฌ๋“ ์ง€ ์ด๊ฒƒ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.
๋‹น์‹ ์˜ ๋„์›€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

`cli ํŒจํ‚ค์ง€ : (/usr/local/Cellar/node@6/6.12.2/lib/node_modules)

@ionic/cli-utils  : 1.19.0
ionic (Ionic CLI) : 3.19.0

๊ธ€๋กœ๋ฒŒ ํŒจํ‚ค์ง€ :

cordova (Cordova CLI) : 8.0.0

๋กœ์ปฌ ํŒจํ‚ค์ง€ :

@ionic/app-scripts : 3.1.6
Cordova Platforms  : android 6.3.0 ios 4.5.4
Ionic Framework    : ionic-angular 3.9.2

์ฒด๊ณ„:

Android SDK Tools : 26.1.1
Node              : v6.12.2
npm               : 5.5.1 
OS                : macOS Sierra
Xcode             : Xcode 9.2 Build version 9C40b

ํ™˜๊ฒฝ ๋ณ€์ˆ˜:

ANDROID_HOME : /Users/santhoshgl/Library/Android/sdk

๊ธฐํƒ€ :

backend : legacy`

ํด๋ฆญ ๋ฒ„ํŠผ (mousedown)="$event.preventDefault(); yourFunction()"

์–ด๋–ค ์†Œ์‹์ด๋ผ๋„?

์•„๋ณด์นด๋„ @mladilav ๋ฅผ ๊ธฐ๋‹ค๋ ค์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๊ฒƒ

์ด์˜จ ์ž…๋ ฅ์—์„œ iOS ํ‚ค๋ณด๋“œ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ํ‚ค๋ณด๋“œ๊ฐ€ ํ‘œ์‹œ๋œ ํ›„ ์ž…๋ ฅ์— ์บ๋Ÿฟ์ด ๋ Œ๋”๋ง๋˜์ง€ ์•Š์œผ๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ํ•„๋“œ์— ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž…๋ ฅ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹ค์–‘ํ•œ ionic ๋ฒ„์ „, webview ๋ฒ„์ „ ๊ด€๋ฆฌ ๋“ฑ์„ ๋ชจ๋‘ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์•„๋ฌด ์†Œ์šฉ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์˜จ ์ž…๋ ฅ์„ ์Šคํฌ๋กคํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์ด์˜จ ์ž…๋ ฅ์ด ํŽ˜์ด์ง€ ๋งจ ์œ„์— ์žˆ์œผ๋ฉด ๋ฌธ์ œ๊ฐ€์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ํ•ด๊ฒฐ ํ•œ ํ•œ ๊ฐ€์ง€๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. Xcode 8.3.3์—์„œ ํ•ด๋‹น ์•ฑ์„ ๋นŒ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์‹œ๋„ํ•œ ๋ชจ๋“  ์ด์ „ ๋นŒ๋“œ๋Š” ๋ฉฐ์น  ์ „์— ๋‚˜์˜จ ์ตœ์‹  Xcode 9.3 ๋ฆด๋ฆฌ์Šค์— Xcode 9.0์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ˆ˜์ •์˜ ๋ฌธ์ œ๋Š” Apple์ด ๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— Xcode 8์—์„œ ์ œ์ถœ๋˜๋Š” ์•ฑ ์–‘์‹์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€ ๋‹ค๋ฅธ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

PB ์Šคํฌ๋กค, ๋‚˜๋Š” ์—ฌ๊ธฐ์— ํ•ดํ‚น์„ ์ผ๋‹ค : https://github.com/ionic-team/ionic/issues/10629#issuecomment -395084125

๋ฌธ์ œ๋ฅผ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! Ionic 3์˜ ์†Œ์Šค ์ฝ”๋“œ์™€ ๋ฌธ์ œ๋ฅผ ๋ณ„๋„์˜ ์ €์žฅ์†Œ๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ Ionic 3์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์˜ฎ๊น๋‹ˆ๋‹ค. ์ €๊ธฐ์ด ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•˜์‹ญ์‹œ์˜ค.

Ionic์„ ์‚ฌ์šฉํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋ฌธ์ œ ์ด๋™ : https://github.com/ionic-team/ionic-v3/issues/827

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰