Ionic-framework: ํ—ค๋” ํ‘œ์‹œ์ค„์ด ์ƒํƒœ ํ‘œ์‹œ์ค„ ๋’ค์—์„œ ์œ„๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์–‘์‹ ํ•„๋“œ์— ํฌ์ปค์Šค๊ฐ€ ์žˆ์„ ๋•Œ ๋ทฐํฌํŠธ์—์„œ ์™„์ „ํžˆ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค.

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

์Œ.. ์š”์•ฝํ•˜์ž๋ฉด..^^

์Šคํฌ๋ฆฐ์ƒท(Ionic ๋ฒ ํƒ€ 1, iPhone 4):

photo-1
photo

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

iOS์—์„œ ์ „ํ™”/์นด๋ฉ”๋ผ ํ™”๋ฉด์—์„œ ํŒŒ์ผ ์—…๋กœ๋“œ๊ฐ€ ์—ด๋ฆด ๋•Œ ์ด ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

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

#818์˜ ์ค‘๋ณต

๊ฐ์‚ฌ ํ•ด์š”. ๋ฒ ํƒ€2์šฉ ํ‚ค๋ณด๋“œ ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋‹จ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
๋‹น์‹ ์ด beta2๋ฅผ ์ถœ์‹œํ•  ๊ณ„ํš์ด ์žˆ์„ ๋•Œ์ฏค์ด๋ฉด ๋‚ด ์•ฑ์€ ์ด๋ฏธ ์ถœ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค ;-)

๋‹ค์Œ์€ ์ด ๋ฌธ์ œ์˜ ์‹ค์ œ ๋ฐ๋ชจ์ž…๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ "Ionic, v1.0.0-beta.1"์„ ์‚ฌ์šฉํ•˜์—ฌ "์‹œ์ž‘ํ•˜๊ธฐ" ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๋‹จ๊ณ„:

  • npm install -g ์ฝ”๋ฅด๋„๋ฐ” ์ด์˜จ
  • ์ด์˜จ ์‹œ์ž‘ statusBarTest ์‚ฌ์ด๋“œ ๋ฉ”๋‰ด
  • ionic ํ”Œ๋žซํผ ios ์ถ”๊ฐ€

๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐ„๋‹จํ•œ ์–‘์‹์œผ๋กœ ์‹œ์ž‘ํ•˜๋„๋ก app.js ์„ ํŽธ์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค. :

<ion-view title="Form Test">
  <ion-nav-buttons side="left">
    <button menu-toggle="left" class="button button-icon icon ion-navicon"></button>
  </ion-nav-buttons>
  <ion-content class="has-header">

    <div class="list">
      <label class="item item-input">
        <input type="text" placeholder="First Name">
      </label>
      <label class="item item-input">
        <input type="text" placeholder="Middle Name">
      </label>
      <label class="item item-input">
        <input type="text" placeholder="Last Name">
      </label>
      <label class="item item-input">
        <input type="text" placeholder="Address 1">
      </label>
      <label class="item item-input">
        <input type="text" placeholder="Address 2">
      </label>
      <label class="item item-input">
        <input type="text" placeholder="City">
      </label>
      <label class="item item-input">
        <input type="text" placeholder="State">
      </label>
      <label class="item item-input">
        <input type="text" placeholder="Zip Code">
      </label>
    </div>

  </ion-content>
</ion-view>

๊ทธ ๋‹ค์Œ์—:

  • ์•„์ด์˜ค๋‹‰ ๋นŒ๋“œ ios
  • ์ด์˜จ ์—๋ฎฌ๋ ˆ์ดํŠธ ios

๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

status bar problem

๋ณด์‹œ๋‹ค์‹œํ”ผ ํ‚ค๋ณด๋“œ๋Š” ์–‘์‹์„ ์ƒํƒœ ํ‘œ์‹œ์ค„๋กœ ๋ฐ€์–ด ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

ํ—ค์ด Justin, ๋ฌธ์ œ๋Š”

position: fixed ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋ ฅํ•˜๋‹ค
๋ณธ๋ฌธ CSS๋ฅผ position:static ํ•ฉ๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ์ˆ˜์ •์„ ํ‘ธ์‹œํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค
๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ ์—ฌ๋Ÿฌ ์žฅ์น˜์—์„œ ํ‚ค๋ณด๋“œ ํ•ญ๋ชฉ์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•œ ๋ฒˆ ์‹œ๋„ํ•ด ๋ณด๊ณ  ๋„์›€์ด ๋˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”.

2014๋…„ 4์›” 2์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 4์‹œ 34๋ถ„, Justin Noel [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ด ๋ฌธ์ œ์˜ ์‹ค์ œ ๋ฐ๋ชจ์ž…๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ "Ionic,
v1.0.0-๋ฒ ํƒ€.1".

๋‚ด ๋‹จ๊ณ„:

  • npm install -g ์ฝ”๋ฅด๋„๋ฐ” ์ด์˜จ
  • ์ด์˜จ ์‹œ์ž‘ statusBarTest ์‚ฌ์ด๋“œ ๋ฉ”๋‰ด
  • ionic ํ”Œ๋žซํผ ios ์ถ”๊ฐ€

๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐ„๋‹จํ•œ ํ˜•์‹์œผ๋กœ ์‹œ์ž‘ํ•˜๋„๋ก app.js๋ฅผ ํŽธ์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค. :



๋ถˆํ–‰ํžˆ๋„, ๊ทธ๊ฒƒ์€ ๋„์›€์ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ์—์„œ ์ด๊ฒƒ์„ "style.css"์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

body, .ionic-body {
    position: static;
}

Ionic CSS ํŒŒ์ผ ๋’ค์— "style.css"๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Safari ๋””๋ฒ„๊ทธ์—์„œ position: static ๊ฐ€ ๋ณธ๋ฌธ์— ์ ์šฉ๋œ ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์šด๋„ ์—†์ด ๊ทธ๋ƒฅ ๋ชธ์œผ๋กœ ํ•ด๋ดค๋‹ค.

body {
    position: static;
}

๋‹ค์Œ์œผ๋กœ "ionic.css" ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ํ—ค๋”๋ฅผ ์ •์ ์œผ๋กœ ๋งŒ๋“ค ์˜๋„๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ–ˆ๋‹ค. ๊ทธ๊ฒƒ๋„ ์šด์ด ์—†์Šต๋‹ˆ๋‹ค.

์•„, iOS 7.1 ์ „์šฉ์ด๋ผ๋Š” ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ Mac์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋‚ด์ผ ๋จผ์ € ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋ฐ๋ชจ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค Justin :+1:

.pane ๋ฐ .view ์—๋„ ์ ˆ๋Œ€ ์œ„์น˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์„ค์ •์— ๋”ฐ๋ผ .body ๋ฅผ position:static ์„ค์ •ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ตฌ์ถ•ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ๋ชจ๋ฐ”์ผ ์›น ์•ฑ์—์„œ ํ—ค๋”๋Š” ์ด๋Ÿฌํ•œ ๋ฌด๊ฑฐ์šด ์œ„์น˜ ์š”์†Œ์˜ ์™ธ๋ถ€์— ์žˆ์–ด์•ผ ํ•˜๊ณ  ํ—ค๋” ์ž์ฒด๋Š” ํ‚ค๋ณด๋“œ๊ฐ€ ์ผœ์ ธ ์žˆ์„ ๋•Œ ๊ฑฐ๊ธฐ์— ๋จธ๋ฌผ๋„๋ก position:fixed ๋กœ ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Android์—๋Š” adjust-resize ๋ผ๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ํ‚ค๋ณด๋“œ ์œ„์— ๋งž๋„๋ก ๋ณด๊ธฐ๋ฅผ ์ฐŒ๊ทธ๋Ÿฌ๋œจ๋ฆฝ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— iOS๋Š” ํ™”๋ฉด์—์„œ ์ž…๋ ฅ์„ ์ค‘์•™์— ๋ฐฐ์น˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ณด๊ธฐ๋ฅผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

Cordova์—๋Š” ๊ธฐ๋ณธ๊ฐ’์ด false์ธ "KeyboardShrinksView"๋ผ๋Š” ๊ธฐ๋ณธ ์„ค์ •๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•„์ง ์ด๊ฒƒ์„ ๋ณด์ง€ ์•Š์•˜์ง€๋งŒ Android๊ฐ€ ์ด๋ฏธ adjust-resize๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ iOS์šฉ ์†”๋ฃจ์…˜์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด ๋‘ ๊ฐ€์ง€ ์ฐจ์ด์  ์‚ฌ์ด์˜ ์กฐํ™”๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ผ์˜ ์ง€์˜ฅ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ํ‚ค๋ณด๋“œ ์ˆ˜์ • ์ž‘์—…์„ ํ™œ๋ฐœํžˆ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฒ„๊ทธ๋Š” ๋ถˆํ–‰ํžˆ๋„ ์•ผ๊ฐ„ 1717์—์„œ ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@tlancina๊ฐ€ ์•Œ์•„์ฐจ๋ฆฐ ํ•œ ๊ฐ€์ง€๋Š” ์ตœ์‹  ํƒญ ์ˆ˜์ •์œผ๋กœ ์ž…๋ ฅ์„ ์ง์ ‘ ํด๋ฆญํ•ด๋„ ํ—ค๋”๊ฐ€ ์œ„๋กœ ์ด๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๊ฐ€ ์ด ๋ฌธ์ œ์˜ ์ผ๋ถ€๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ž…๋ ฅ์„ ๋ž˜ํ•‘ํ•˜๋Š” ๋ ˆ์ด๋ธ”์„ ํƒญํ•˜๋ฉด 300ms ํ›„์— ์ถ”ํ•œ ๊ธฐ๋ณธ ์Šคํฌ๋กค์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ Ionic CSS๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์€ ๋ž˜ํ•‘ ๋ ˆ์ด๋ธ”๊ณผ ์‹ค์ œ ์ž…๋ ฅ ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ํ•ญ์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด์œ ์˜ ์ผ๋ถ€์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์žฅ์น˜์—์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊ทธํ•˜๋Š” ๋ฐ ๋„์›€์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ๋‹น์žฅ์€ ๋ ˆ์ด๋ธ” ํด๋ฆญ ์‹œ ๊ธฐ๋ณธ๊ฐ’์„ ๋ฐฉ์ง€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ์„ ๋ž˜ํ•‘ํ•˜๋Š” ๋ ˆ์ด๋ธ”์—์„œ e.preventDefault()๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ํƒญ์—์„œ ํ‚ค๋ณด๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ํŒ์—…๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฑด ์ข€ ๋” ์•Œ์•„๋ด์•ผ๊ฒ ๋„ค์š” ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@adamdbradley๋Š” ์•ผ๊ฐ„ ํ™œ๋™์— ๋“ค์–ด๊ฐˆ ๋•Œ ์ด ์ˆ˜์ • ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ํ…Œ์Šคํ„ฐ๋กœ ์ž์›ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๋งˆ์›Œ.

๋ถˆํ–‰ํžˆ๋„ ์ด ๋ฌธ์ œ๋Š” 1.0.0 beta2์—์„œ ์•„์ง ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@CoenWarmer ์šฐ๋ฆฌ๋Š” ๋ฌธ์ œ๋ฅผ ์ธ์‹ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์—ฌ์ „ํžˆ ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ํ‚ค๋ณด๋“œ ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ ํ•  ๋•Œ ํ”Œ๋žซํผ, ํ”Œ๋žซํผ ๋ฒ„์ „, ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €, ์—๋ฎฌ๋ ˆ์ดํ„ฐ ๋˜๋Š” ์ฝ”๋ฅด๋„๋ฐ”์˜ ๋ฌธ์ œ์ธ์ง€, ์ฝ”๋ฅด๋„๋ฐ”์˜ ๊ฒฝ์šฐ ์ „์ฒด ํ™”๋ฉด์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ๋‹ค๋ฅธ ์œ ์šฉํ•œ ์ •๋ณด์—๋Š” ๋ ˆ์ด๋ธ” ๋˜๋Š” ์ž…๋ ฅ๊ณผ ๊ฐ™์ด ํƒญํ•œ ์š”์†Œ, ์ž…๋ ฅ์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์–ธ์ œ๋“ ์ง€ ์ˆ˜๋™์œผ๋กœ ์Šคํฌ๋กคํ•ด์•ผ ํ–ˆ๋Š”์ง€, ๋ฉ”ํƒ€ ๋ทฐํฌํŠธ์— height=device-height๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€, ์š”์†Œ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€์ง€ ์—ฌ๋ถ€๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ํ‚ค๋ณด๋“œ๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ์œ„์น˜ ์•„๋ž˜์— ํ‚ค๋ณด๋“œ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ์œ„์น˜์˜ ์ ˆ๋ฐ˜์ด ํ‘œ์‹œ๋˜๊ฑฐ๋‚˜ ์Šคํฌ๋กคํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ์œ„์ชฝ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”

๋‹ค์Œ์—์„œ ๋ฐœ์ƒ:

  • iOS7.1.1
  • ์ด์˜จ 1.0.0 ๋ฒ ํƒ€ 2
  • ์ฝ”๋ฅด๋„๋ฐ”์—์„œ
  • ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ๋ฐ ์žฅ์น˜์—์„œ
  • ์ „์ฒด ํ™”๋ฉด์ด ์•„๋‹Œ
  • ๋ ˆ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ž…๋ ฅ๋งŒ
  • ์ž…๋ ฅ ํ•„๋“œ์— ํฌ์ปค์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ทฐ๋ฅผ ์Šคํฌ๋กคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ ํ•„๋“œ์— ํฌ์ปค์Šค๊ฐ€ ์—†์œผ๋ฉด ๋ทฐ๋ฅผ ์Šคํฌ๋กคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ทฐ๋Š” ํฌ์ปค์Šค๋ฅผ ๋ฐ›๊ณ  ํ‚ค๋ณด๋“œ๊ฐ€ ํŒ์—…๋œ ์งํ›„์— ์Šคํฌ๋กค๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ ํ•„๋“œ์— ์ดˆ์ ์ด ๋งž์ถฐ์ง€๋ฉด ์ž…๋ ฅ ํ•„๋“œ์— ์†๊ฐ€๋ฝ์„ ๋†“๊ณ  ์œ„๋กœ ๋Œ์–ด ๋ณด๊ธฐ๋ฅผ ์›น ๋ณด๊ธฐ ๋ฐ–์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ 1.0.0 beta2๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Android 4.4 ๋ฐ 4.3์—์„œ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. iOS7.1๊ณผ ๋˜‘๊ฐ™์€ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž…๋ ฅ ํ•„๋“œ๊ฐ€ ํฌ์ปค์Šค๋ฅผ ๋ฐ›๊ณ  ํ‚ค๋ณด๋“œ๊ฐ€ ํŒ์—…๋˜๋ฉด ์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ ํ•„๋“œ์— ํฌ์ปค์Šค๊ฐ€ ์žˆ๊ณ  ์†๊ฐ€๋ฝ์„ ์ž…๋ ฅ ํ•„๋“œ์— ๋†“๊ณ  ์œ„ ๋˜๋Š” ์•„๋ž˜๋กœ ๋“œ๋ž˜๊ทธํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋ชจ๋“  ์ฝ˜ํ…์ธ ๋ฅผ ๋ณด๊ธฐ ๋ฐ–์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. . ๋‚˜์ค‘์— ์Šคํฌ๋ฆฐ์บ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฐ์บ์ŠคํŠธ: https://www.dropbox.com/s/2g6b41n3s3vpj0s/2.mov

beta2 ์ดํ›„์— ์ž‘์€ ํ™”๋ฉด(์˜ˆ: iphone3 ๋˜๋Š” iphone4)์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์•„์ดํฐ 5 (OK)

iphone5

์•„์ดํฐ 4 (๋ฌธ์ œ)

iphone4

@zelphir ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” codepen์„ ์ œ๊ณตํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋‘˜ ๋‹ค iOS 7.0์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด 7.1์ž…๋‹ˆ๊นŒ?

@CoenWarmer ๊ฐ€ ์šฐ์—ฐํžˆ ์ฝ˜ํ…์ธ  ์˜์—ญ ์— ์ž…๋ ฅํ•˜๊ฒŒ ๋˜์—ˆ๋‚˜์š” ? ๊ท€ํ•˜์˜ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์Šคํฌ๋กค ๋ณด๊ธฐ์— ์—†๋Š” ์ž…๋ ฅ์„ ๊ฐ–๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

@tlancina ๋‚ด ์ž…๋ ฅ์ด ์ฝ˜ํ…์ธ  ์˜์—ญ ๋‚ด์— ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

<ion-view title="Delegates">
  <div class="search-container">
    <div class="search-inner">
      <input ng-model="searchText" placeholder="Search" ng-enter="ScrollTop()">
    </div>
  </div>

  <ion-tabs class="tabs-icon-only tabs-double">
    <ion-tab title="A-Z">
      <ion-content class="slide-under-header has-header has-tabs has-double-tabs" padding="false" delegate-handle="DelegateScroll">
        <!-- stuff -->
      </ion-content>
    </ion-tab>
    <!-- another ion-tab -->
  <ion-tabs>
</ion-view>

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

ํŽ˜์ด์ง€ ๋งจ ์•„๋ž˜์— ๋„๋‹ฌํ•˜๋Š” ์—ฌ๋Ÿฌ ์ž…๋ ฅ ๋ชฉ๋ก์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. Javascript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํฌ๋กคํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ ๋‚ด์— ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ‚ค๋ณด๋“œ๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ ์–ด๋–ป๊ฒŒ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ํ—ค๋”๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ์ฝ˜ํ…์ธ ๋ฅผ ์ด๋™ํ•˜์—ฌ ์ž‘๋™ํ•˜๋Š” ๊ธฐ๋ณธ ๋ธŒ๋ผ์šฐ์ € ์Šคํฌ๋กค์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ ๋˜๋Š” ํฌ์ปค์Šค ๊ฐ€๋Šฅ ์˜์—ญ์ด ์ด์˜จ ์Šคํฌ๋กค ๋ณด๊ธฐ ๋‚ด์— ์žˆ๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์Šคํฌ๋กค์„ ๋ฐฉ์ง€ํ•˜๊ณ  Javascript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ—ค๋”๋ฅผ ์ œ์ž๋ฆฌ์— ๋‘๊ณ  ๋ณด๊ธฐ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ๋‚˜๋Š” UI ๋ผ์šฐํ„ฐ ์ „๋ฌธ๊ฐ€๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ํŽ˜์ด์ง€์˜ ๋ชจ๋“  ์ฝ˜ํ…์ธ  ์ฃผ์œ„์— ์ด์˜จ ์ฝ˜ํ…์ธ ๋ฅผ ๋ฐฐ์น˜ํ•˜๊ณ  ๋„์›€์ด๋˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์ด์ œ ์ดํ•ดํ•˜์ง€๋งŒ ๋’ค๋กœ ๋ฒ„ํŠผ์„ ํฌํ•จํ•˜์—ฌ ์ „์ฒด ํƒ์ƒ‰ ๋ชจ์Œ์ด ์‚ฌ๋ผ์ง€๋Š” ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์€ ์‹œ๊ฐ์  ํšจ๊ณผ๋กœ ์ด์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ์š”์ ์— ๋Œ€ํ•ด ๋งํ•˜์ž๋ฉด, ion-content ๋‚ด์— ์ž…๋ ฅ ํ•„๋“œ๋ฅผ ๋„ฃ์œผ๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด iOS ๋ฐ Android์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ—ค๋” ํ‘œ์‹œ์ค„ ์•„๋ž˜ ์ƒ๋‹จ์— ๊ณ ์ •๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋˜๋„๋ก ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์˜ˆ, ํƒญ์„ ์ €๊ธ€๋งํ•˜๊ณ  ์ž…๋ ฅ์„ ์œ„ํ•ด ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•œ ์˜์—ญ์„ ์œ ์ง€ํ•˜๋Š” ์ƒํ™ฉ์€ ๊ฝค ๊นŒ๋‹ค๋กœ์›Œ ๋ณด์ด๋ฉฐ ์ƒ๋‹นํžˆ ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. @adamdbradley ์™€ ์ €๋Š” ์ง€๊ธˆ ๊ทธ๊ฒƒ์„ ์กฐ์‚ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์ „ํ™˜ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

<ion-content>
  <div class="search-container">
    <div class="search-inner">
      <input ng-model="searchText" placeholder="Search" ng-enter="ScrollTop()">
    </div>
  </div>
</ion-content>

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

@tlancina ์•„ ์ข‹์•„, ํ•˜๋‚˜์˜ ๋ถ€๋ถ„์— ๋‘ ๊ฐœ์˜ ์ด์˜จ ํ•จ๋Ÿ‰ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณด๊ณ  ๋‹ค์‹œ ๋ณด๊ณ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์–ธ๊ธ‰ํ•œ ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฌธ์ œ๋Š” ํŠน์ • Android ๋ฒ„์ „์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์š”์†Œ์—์„œ position: static์„ ์‚ฌ์šฉํ•˜๊ณ  ํ•ด๋‹น ๋ณด๊ธฐ์—์„œ ์ „ํ™˜ํ•˜๋ฉด Android 4.1์—์„œ 4.3์œผ๋กœ(100% ํ™•์‹คํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ํ™•์ธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค) ํ•ด๋‹น ์š”์†Œ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์‹œ์ž‘๋˜๋ฉด ์ž ๊ธด ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ์š”์†Œ(์ด์˜จ ์ฝ˜ํ…์ธ , ํƒญ, ํ—ค๋” ๋ง‰๋Œ€ ๋“ฑ)๋Š” ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์ง€๋งŒ position: static์„ ์ง€์ •ํ•œ ์š”์†Œ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ฐ™์€ ์œ„์น˜์— ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ iOS์—์„œ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ์ •์  ์œ„์น˜๋ฅผ ์–ด๋””์—์„œ๋‚˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ฃผ์ €ํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

@tlancina ๋ฐฉ๊ธˆ ์ž…๋ ฅ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์˜ ์ด์˜จ ํ•จ๋Ÿ‰์— ๋„ฃ๊ณ  ๋‚˜๋จธ์ง€ ๋‚ด์šฉ์„ ๋‹ค๋ฅธ ๋‘ ๋ฒˆ์งธ ์ด์˜จ ํ•จ๋Ÿ‰์— ๋„ฃ์œผ๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ์ž…๋ ฅ ์š”์†Œ์— ์ž…๋ ฅ๋œ ๋ชจ๋“  ์ž…๋ ฅ์€ ์ด์ œ ๋” ์ด์ƒ ๋‹ค๋ฅธ ์ด์˜จ ํ•จ๋Ÿ‰์— ์žˆ๋Š” ng-repeat๋ฅผ ํ•„ํ„ฐ๋งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ œ์•ˆ?

@CoenWarmer ion-content๊ฐ€ ์ž์‹ ๋ฒ”์œ„๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‘ ์ฝ˜ํ…์ธ  ๋ชจ๋‘์— ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋ฐฐ์น˜ํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ž…๋ ฅ์— ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋ฒ”์œ„ ์ƒ์†์˜ '์ ' ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ž์‹ ๋ฒ”์œ„์˜ ๊ธฐ๋ณธ ์š”์†Œ๊ฐ€ ๋ถ€๋ชจ ๋ฒ”์œ„๊ฐ€ ์•„๋‹Œ ์ž์‹ ๋ฒ”์œ„์— ์„ค์ •๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ญ๋ผ๋Š”์ง€ ์•Œ ๊ฒ ์–ด? ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์•Œ์•„๋‘์„ธ์š”. ๋งํฌ๋ฅผ ์ฐพ์•„/์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ๊ทธ๊ฒƒ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ณต์œ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? :)

์•„, ๋„ค, ์ดํ•ด๊ฐ€ ๋ฉ๋‹ˆ๋‹ค! ํ•œ ๋ฒˆ ๋” ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค :+1:

์•ˆ๋…•ํ•˜์„ธ์š” @์•„๋‹ด์ž…๋‹ˆ๋‹ค. ์ž…๋ ฅ์ด ์žˆ๋Š” ๋ฐ”๋‹ฅ๊ธ€์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์Šคํฌ๋กค ์˜์—ญ ๋ฐ–์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

iPad(7.1)์—์„œ๋„ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ionic์ด ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ตœ๊ทผ ๋ณ€๊ฒฝ ํ›„ ๋ทฐํฌํŠธ์— height=device-height๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
์ด ์†์„ฑ ๋•Œ๋ฌธ์— ๋ทฐํฌํŠธ๊ฐ€ ์•ฝ 200px(๋†’์ด)๋กœ ์ปค์ง€๊ณ  ์™„์ „ํžˆ ์Šคํฌ๋กคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ๊ทธ๊ฒƒ์„ ์ œ๊ฑฐํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
.view ๋ฐ .pane์„ position: fixed๋กœ ์„ค์ •ํ•˜๊ณ  body๋ฅผ position: static์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ๋“  ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฉ”์ธ ๋ทฐํฌํŠธ๋Š” ์—ฌ์ „ํžˆ ํฌ๊ณ  ์†๊ฐ€๋ฝ์„ ์œ„์•„๋ž˜๋กœ ์›€์ง์ด๋ฉด ์˜ค๋ฅธ์ชฝ์— ์Šคํฌ๋กค๋ฐ”๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ  ... ์ด๊ฒƒ์€ ์ž…๋ ฅ ์ดˆ์ ๊ณผ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค. ์ž…๋ ฅ ํฌ์ปค์Šค๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์Šคํฌ๋กค ์œ„์น˜๋งŒ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„, ํ˜„์žฌ ์ง„ํ–‰ ์ƒํ™ฉ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?
์‚ฌ์šฉ์ž ์ •์˜ ionic ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์ถ”๊ฐ€ 'height=device-height'๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด ๋ณ€๊ฒฝ ํ›„์—๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋” ์ด์ƒ CSS ์ˆ˜์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ž…๋ ฅ ํ•„๋“œ ํƒญ์— ๋Œ€ํ•œ ์ดˆ์ ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ iOS์—์„œ ํ‚ค๋ณด๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Keyboard.shrinkView(true);
Keyboard.hideFormAccessoryBar(true);

๋ณ„๋„์˜ ์ด์˜จ ์ฝ˜ํ…์ธ ์— ์ž…๋ ฅ์„ ๋ฐฐ์น˜ํ•ด๋„ ์ž…๋ ฅ์— ํฌ์ปค์Šค๊ฐ€ ์žˆ์„ ๋•Œ ํ—ค๋” ํ‘œ์‹œ์ค„์„ ํฌํ•จํ•˜์—ฌ ์ „์ฒด ๋ณด๊ธฐ๋ฅผ ์›น ๋ณด๊ธฐ ์•„๋ž˜์—์„œ ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋™์ž‘์ด ์ค‘์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์ „ ์Šคํฌ๋ฆฐ์บ์ŠคํŠธ์—์„œ์™€ ๋™์ผํ•œ ๋™์ž‘์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค: https://www.dropbox.com/s/2g6b41n3s3vpj0s/2.mov

@D3CK3R ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๋‹ค์–‘ํ•œ ๋ทฐํฌํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ฐ”๋กœ

@CoenWarmer Ionic Keyboard Plugin์„ ์‹คํ–‰ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋ฐฉ๊ธˆ ๊ณต๊ฐœํ–ˆ์œผ๋ฉฐ ์Šคํฌ๋กค ๋ณด๊ธฐ ์™ธ๋ถ€์˜ ์ž…๋ ฅ์—์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

Cordova ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์—์„œ cordova plugin add https://github.com/driftyco/ionic-plugins-keyboard.git ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@tlancina ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ•œ ํ›„ ์ž…๋ ฅ์— ํฌ์ปค์Šค๊ฐ€ ์žˆ์„ ๋•Œ ์ฝ˜ํ…์ธ ๋ฅผ ๋ทฐํฌํŠธ ์•„๋ž˜๋กœ ๋” ์ด์ƒ ๋Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์—„์ฒญ๋‚œ!!

ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ”„๋กœ๋•์…˜ ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ฐฉ๊ธˆ ์Šคํ† ์–ด์— ๊ฒŒ์‹œ๋˜์—ˆ์œผ๋ฏ€๋กœ ๊ฐ€๋Šฅํ•œ ๋นจ๋ฆฌ ๋ฐฐํฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@CoenWarmer ๋งˆ์ง€๋ง‰ ๋Œ“๊ธ€์„ ๋ณด๊ณ  ์–ผ๋งˆ๋‚˜ ๊ธฐ๋ปค๋Š”์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค! ๋ฉ‹์ง„ ์ž‘ํ’ˆ @tlancina!

@adamdbradley @tlancina
highfive

์‘!!!

@CoenWarmer iOS์šฉ ์˜ˆ, ํ”„๋กœ๋•์…˜ ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ์•ฑ ์Šคํ† ์–ด์— ์Šน์ธ๋œ ์•ฑ์— ์ด์ „ ๋ฒ„์ „์ด ์žˆ์œผ๋ฉฐ ์ถ”๊ฐ€ํ•œ ์Šคํฌ๋กค ํ•ญ๋ชฉ์ด ๊ฑฐ๋ถ€ ์‚ฌ์œ ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์„ ์œ„ํ•ด ์ผํ•˜๊ณ  ์žˆ์–ด ์ •๋ง ๊ธฐ์ฉ๋‹ˆ๋‹ค!

๋‹ซ๊ธฐ ์ข‹์€? @tlancina

์ด๊ฒƒ์€ beta14 ๋ฆด๋ฆฌ์Šค์—์„œ ์—ฌ์ „ํžˆ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ๊ด‘๋ฒ”์œ„ํ•œ ๋””๋ฒ„๊น… ํ›„์— ๋งˆ์นจ๋‚ด ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์—๋Š” meta viewport ์™€ ๊ด€๋ จ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์›๋ž˜ ๊ฐ’(ํ—ค๋”๊ฐ€ ์ƒํƒœ ํ‘œ์‹œ์ค„ ๋’ค์— ํ‘œ์‹œ๋˜๋„๋ก ํ•จ)

<meta name="viewport" content="width=device-width">

์ƒˆ๋กœ์šด ๊ฐ€์น˜(์ด ๋ฌธ์ œ ํ•ด๊ฒฐ)

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

์ €๋Š” beta1 ์ด์ „์— ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ์•„๋งˆ๋„ ๋‚ด๊ฐ€ ๋ˆˆ์น˜์ฑ„์ง€ ๋ชปํ•œ ์ผ๋ถ€ ๋ ˆ๊ฑฐ์‹œ html์ด์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋•๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

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

์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋‚˜์—๊ฒŒ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํ‚ค๋ณด๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ ์˜์—ญ์„ "๋ฉ”๋ชจ์žฅ"์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋†’์ด: 100% ์Šคํƒ€์ผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ „์ฒด ํ™”๋ฉด์„ ์ฑ„์šฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์Šคํƒ€์ผ์„ ์ž‘๋™์‹œํ‚ค๋ ค๋ฉด ๋†’์ด ์Šคํƒ€์ผ์ด ๋ถ€๋ชจ์˜ ๋†’์ด๋กœ๋งŒ ํ™•์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— scroll="false"๋กœ ์Šคํฌ๋กค์„ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ด "๋ฉ”๋ชจ์žฅ"์„ ๋งŒ๋“œ๋Š” ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ œ์•ˆํ•ด ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ์Šคํฌ๋ฆฐ์ƒท์„ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ…์ŠคํŠธ ์˜์—ญ์— ๋ฐฐ๊ฒฝ์ƒ‰์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ณด๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

<ion-modal-view>
    <ion-header-bar class="bar-royal">
        <div class="buttons">
            <button class="button button-clear" ng-click="vm.closeAddNote()">Cancel</button>
        </div>
        <h1 class="title">Add Note</h1>
        <div class="buttons">
            <button class="button button-clear" ng-click="vm.saveNote(vm.noteContent)">Done</button>
        </div>
    </ion-header-bar>
    <ion-header-bar align-title="left" class="bar-subheader bar-stable">
        <h3 class="title">adding note for `client name`</h3>
    </ion-header-bar>
    <ion-content class="has-subheader" scroll="false">
        <div class="list padding" style="height: 100%;">
            <textarea placeholder="Comments" style="height: 100%; width: 100%;" ng-model="vm.noteContent"></textarea>
        </div>
    </ion-content>
</ion-modal-view>

์ดˆ๊ธฐ ๋ณด๊ธฐ

ํ…์ŠคํŠธ ์˜์—ญ์„ ํด๋ฆญํ•œ ํ›„

ํ…์ŠคํŠธ ์˜์—ญ์— ํฌ์ปค์Šค๊ฐ€ ์žˆ๋Š” ๋™์•ˆ ์Šคํฌ๋กคํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. @ajoslin @adamdbradley ๋ฅผ ๋„์™€ ์ฃผ์„ธ์š” .

ios simulator screen shot 25 may 2015 17 53 32

ios simulator screen shot 25 may 2015 17 53 36

iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ - iPhone 6 / iOS 8.3
์ด์˜จ ๋ฒ„์ „ 1.0.0-rc.0
์„ค์น˜๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ:

  • com.ionic.keyboard
  • com.phonegap.plugins.PushPlugins
  • org.apache.cordova.console
  • org.apache.cordova.device
  • org.apache.cordova.file
  • org.apache.cordova.geolocation
  • org.apache.cordova.media

๋ชจ๋‹ฌ์˜ HTML:

<ion-modal-view>
  <ion-header-bar>
    <div class="buttons">
      <ion-button class="button button-clear" ng-click="closeModal()">Cancel</ion-button>
    </div>
    <h1 class="title">Modal View</h1>
    <div class="buttons">
      <ion-button class="button button-clear" ng-click="create()">Create</ion-button>
    </div>
  </ion-header-bar>
  <ion-content>    
    <form>
...
</form>
</ion-content>
</ion-modal-view>

@ravivit9 @mikehaas763 @AshleyRudland
๋‹น์‹ ์€ ์‹œ๋„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค

iOS Notes
If the content of your app (including the header) is being pushed up and out of view on input focus, 
try setting cordova.plugins.Keyboard.disableScroll(true). 
This does not disable scrolling in the Ionic scroll view, 
rather it disables the native overflow scrolling that happens automatically as a result of focusing on inputs below the keyboard.

ํ‚ค๋ณด๋“œ ios ๋…ธํŠธ์—์„œ

๊ทธ๊ฒƒ์€ ๋งค๋ ฅ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Cordova.plugins.Keyboard.disableScroll(true)์„ ์„ค์ •ํ•˜๊ณ  ๋ทฐ๊ฐ€ ๋‚ด ์ž…๋ ฅ์œผ๋กœ ์Šคํฌ๋กค๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์Šคํฌ๋กค์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ์ƒํƒœ ํ‘œ์‹œ์ค„์ด ๋” ์ด์ƒ ํ‘ธ์‹œ๋˜์ง€ ์•Š์ง€๋งŒ ํ‚ค๋ณด๋“œ๊ฐ€ ๋‚ด ์ž…๋ ฅ ํ•„๋“œ์™€ ๊ฒน์นฉ๋‹ˆ๋‹ค.

@michaelknoch ์ž…๋ ฅ์ด ์Šคํฌ๋กค ๋ณด๊ธฐ(ion-content์™€ ๊ฐ™์€) ๋‚ด์— ์žˆ๋Š” ํ•œ ionic.keyboard.disable() ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š” ํ•œ ์ž๋™์œผ๋กœ ๋ณด๊ธฐ๋กœ ์Šคํฌ๋กค๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@michaelknoch ํ‚ค๋ณด๋“œ ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@LightZam ํ•˜์ง€๋งŒ ion-footer ๋ง‰๋Œ€๋งŒ ์ง€์›ํ•˜๊ณ  ๋‚ด ์ž…๋ ฅ์€ ion-view์˜ ๋‚ด ์ฝ˜ํ…์ธ  ๋‚ด๋ถ€์— ์žˆ์Šต๋‹ˆ๋‹ค.

@tlancina ๋‚ด ์ฝ˜ํ…์ธ ๋ฅผ ionScroll๋กœ ๊ฐ์‹ธ์•ผ ํ•˜๋‚˜์š”? http://ionicframework.com/docs/api/directive/ionScroll/

@michaelknoch ion-content ์—๋Š” ์ด๋ฏธ ์Šคํฌ๋กค ๋ณด๊ธฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๋Ÿด ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์ค‘์ธ ์ „ํ™” ๋ฐ OS์™€ ํ•จ๊ป˜ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์ฝ”๋“œํŽœ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ  ionic info ๋ช…๋ น์˜ ์ถœ๋ ฅ(CLI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ) ๋ด.

@tlancina ์ด ๋ฌธ์ œ์— ์ง๋ฉดํ•ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ฝ”๋ฅด๋„๋ฐ” CLI: 5.2.0
์ด์˜จ ๋ฒ„์ „: 1.1.0
Ionic CLI ๋ฒ„์ „: 1.6.4
Ionic ์•ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „: 0.3.8
iOS ๋ฐฐํฌ ๋ฒ„์ „: 1.7.0
ios-sim ๋ฒ„์ „: 4.1.1
OS: ๋งฅ OS X ์š”์„ธ๋ฏธํ‹ฐ
๋…ธ๋“œ ๋ฒ„์ „: v0.12.7
Xcode ๋ฒ„์ „: Xcode 7.0 ๋นŒ๋“œ ๋ฒ„์ „ 7A176x
์ „ํ™” - โ€‹โ€‹์•„์ดํฐ 4S, iOS 7.0.6

"cordova.plugins.Keyboard.disableScroll(true)" ํ—ค๋”๋ฅผ ์œ ์ง€ํ•˜๋ฉด ๋ฐ€์–ด๋‚ด์ง€ ์•Š์ง€๋งŒ ํ‚ค๋ณด๋“œ๋Š” ๋‚ด ํ…์ŠคํŠธ ์˜์—ญ ์œ„์— ์˜ต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ํ…์ŠคํŠธ ์˜์—ญ(msd-elastic๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ)์„ ๋‚ด๋ถ€์— ๋ณด๊ด€ํ–ˆ์Šต๋‹ˆ๋‹ค., whatsapp๊ณผ ๊ฐ™์€ ์œ ์‚ฌํ•œ ์Šคํƒ€์ผ์„ ์–ป์œผ๋ ค๋ฉด ์™ธ๋ถ€ ์ด์˜จ ์ฝ˜ํ…์ธ 

๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ keyboard-attach๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด msd-elastic์œผ๋กœ ๋ง๊ฐ€์ง‘๋‹ˆ๋‹ค :(
์–ด๋–ค ์ œ์•ˆ?

ionic.Platform.fullScreen()์œผ๋กœ ์‹œ๋„
๊ทธ๋Ÿฌ๋‚˜ ์šด์ด ์—†์Šต๋‹ˆ๋‹ค ... ๋˜ํ•œ์ด fullScreen()์€ ios์—์„œ ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค ...
์ด CSS๋Š” fullscreen()์„ ํ˜ธ์ถœํ•  ๋•Œ ์ ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ—ค๋”์˜ ๋†’์ด๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.
.platform-ios.platform-cordova :not (.fullscreen) .bar- header:not (.bar-subheader) {๋†’์ด: 64px; }

evrything์€ andorid์—์„œ ๊ดœ์ฐฎ ์•˜์Šต๋‹ˆ๋‹ค.

Cordova๋ฅผ 6.0.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„์—๋„ ๊ฑฐ์˜ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์–‘์‹ ํ•„๋“œ์— ํฌ์ปค์Šค๊ฐ€ ์žˆ์„ ๋•Œ ์ƒํƒœ ํ‘œ์‹œ์ค„์ด ๋‚˜ํƒ€๋‚˜๊ณ  ๋จธ๋ฆฌ๊ธ€ ํ‘œ์‹œ์ค„๊ณผ ๊ฒน์นฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋‚ด Android ๊ธฐ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. iOS ๊ธฐ๊ธฐ๋Š” ์•„์ง ์‚ฌ์šฉํ•ด๋ณด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€ pls๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ฝ”๋ฅด๋„๋ฐ” CLI: 6.0.0
Gulp ๋ฒ„์ „: CLI ๋ฒ„์ „ 3.8.11
Gulp ๋กœ์ปฌ: ๋กœ์ปฌ ๋ฒ„์ „ 3.8.11
์ด์˜จ ๋ฒ„์ „: 1.0.0-rc.5
Ionic CLI ๋ฒ„์ „: 1.7.14
Ionic ์•ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „: 0.7.0
iOS ๋ฐฐํฌ ๋ฒ„์ „: 1.8.3
ios-sim ๋ฒ„์ „: 5.0.4
OS: ๋งฅ OS X ์—˜ ์บํ”ผํƒ„
๋…ธ๋“œ ๋ฒ„์ „: v0.12.2
Xcode ๋ฒ„์ „: Xcode 7.2 ๋นŒ๋“œ ๋ฒ„์ „ 7C68

Cordova 6.0.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ Android์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ ํ”Œ๋Ÿฌ๊ทธ์ธ https://github.com/mesmotronic/cordova-plugin-fullscreen ์˜ AndroidFullScreen.immersiveMode ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

// ์‹œ์Šคํ…œ UI๋ฅผ ์ˆจ๊ธฐ๊ณ  ์ˆจ๊ธด ์ƒํƒœ๋กœ ์œ ์ง€(Android 4.4 ์ด์ƒ๋งŒ ํ•ด๋‹น)
AndroidFullScreen.immersiveMode(successFunction, errorFunction);

์ด ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•ฑ์ด ์‹ค์ œ๋กœ ์ „์ฒด ํ™”๋ฉด์—์„œ ์‹คํ–‰๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋ฏ€๋กœ ์ „์ฒด ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์€ ์ ์ ˆํ•œ ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์‹œ๋„ํ•œ ๊ฒฐ๊ณผ ์•ฑ์ด ์ „์ฒด ํ™”๋ฉด ๋ชจ๋“œ๋กœ ์ „ํ™˜๋˜๋Š” ๋™์•ˆ์—๋Š” ์—ฌ์ „ํžˆ ํ™”๋ฉด๋ณด๋‹ค "๋” ํฌ"๋ฏ€๋กœ ์ƒํƒœ ํ‘œ์‹œ์ค„ ์•„๋ž˜์— ์žˆ๋Š” ํ—ค๋”๋กœ ์•ฝ๊ฐ„ ์Šคํฌ๋กคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋„์™€์ฃผ์„ธ์š”!

์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

Ionic 2์˜ iOS์—์„œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ
์ฝ”๋ฅด๋„๋ฐ” CLI: 6.0.0
์ด์˜จ ๋ฒ„์ „: 2.0.0-beta.3
Ionic CLI ๋ฒ„์ „: 2.0.0-beta.19
Ionic ์•ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „: 2.0.0-beta.9
ios-deploy ๋ฒ„์ „: ์„ค์น˜๋˜์ง€ ์•Š์Œ
ios-sim ๋ฒ„์ „: 5.0.6
OS: ๋งฅ OS X ์—˜ ์บํ”ผํƒ„
๋…ธ๋“œ ๋ฒ„์ „: v5.7.1
Xcode ๋ฒ„์ „: Xcode 7.2.1 ๋นŒ๋“œ ๋ฒ„์ „ 7C1002

๋ณด์‹œ๋‹ค์‹œํ”ผ Ionic ์•ฑ์˜ ์ƒํƒœ ํ‘œ์‹œ์ค„๊ณผ ํ—ค๋” ์‚ฌ์ด์—๋Š” ๊ณต๊ฐ„/ํŒจ๋”ฉ์ด ์—†์Šต๋‹ˆ๋‹ค.

screen shot 2016-03-21 at 11 17 49 am

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

์ด๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ์ฒซ ๋ฒˆ์งธ ์ž…๋ ฅ์ด ๋ทฐ์— ์žˆ์–ด์•ผ ํ•˜๊ณ  ํ‚ค๋ณด๋“œ๊ฐ€ ๋ณด์ด๋Š” ํฌ์ปค์Šค๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๊ณ  ๋‘ ๋ฒˆ์งธ ์ž…๋ ฅ์€ ์ ‘ํžŒ ๋ถ€๋ถ„ ์•„๋ž˜(ํ‚ค๋ณด๋“œ ์•„๋ž˜ ์–ด๋”˜๊ฐ€)์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋…น์ƒ‰ ๋ฒ„ํŠผ(๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด)์„ ํƒญํ•˜๋ฉด ๋ณด๊ธฐ๊ฐ€ ์Šคํฌ๋กค๋˜๊ณ  ํ—ค๋”๊ฐ€ ํ™”๋ฉด์—์„œ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

view

์ฝ”๋ฅด๋„๋ฐ” 6.3.0
์ด์˜จ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ‚ค๋ณด๋“œ 2.2.1
Android 5๊ฐ€ ์„ค์น˜๋œ ๊ธฐ๊ธฐ์—์„œ ํ…Œ์ŠคํŠธ๋จ
Android 24.0.1์šฉ ๋นŒ๋“œ

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

@rafaellop ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์…จ์Šต๋‹ˆ๊นŒ?

iOS์—์„œ ์ „ํ™”/์นด๋ฉ”๋ผ ํ™”๋ฉด์—์„œ ํŒŒ์ผ ์—…๋กœ๋“œ๊ฐ€ ์—ด๋ฆด ๋•Œ ์ด ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์ด๋ฉ”์ผ ์ž‘์„ฑ๊ธฐ์— ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ ๋ชจ๋“  ๊ฒƒ์„ ์‹œ๋„ํ•œ ํ›„์—๋„ ์—ฌ์ „ํžˆ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ [email protected] ๋กœ ๋˜๋Œ๋ ค ๋ณด์‹ญ์‹œ์˜ค

์ด ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ๋‚˜์—๊ฒŒ๋„ ๋ฐœ์ƒํ•˜๋ฉฐ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

IOS์—์„œ ์ƒํƒœ ํ‘œ์‹œ์ค„์„ ํƒญํ•˜๋ฉด IONIC2์—์„œ ์ „์ฒด ์ด์˜จ ํ•จ๋Ÿ‰์ด ๊นœ๋ฐ•์ž…๋‹ˆ๋‹ค.์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.์ œ์•ˆํ•˜์‹ญ์‹œ์˜ค..
๊ฐ์‚ฌ ํ•ด์š”.

[email protected]๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ์€ ๋•์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์นด๋ฉ”๋ผ ํŒŒ์ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ํ›„์—๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๊ฒŒ์‹œ๋ฌผ์—์„œ ๋ฐฉ๊ธˆ 2.2.1์—์„œ 2.2.0์œผ๋กœ cordova-statusbar ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Œ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ์ƒํƒœ ํ‘œ์‹œ์ค„ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š”์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค

  • ์ด์˜จ 3.9.2
  • ์ฝ”๋ฅด๋„๋ฐ”-ios 4.4.0
  • iOS 10.3
  • ๋‹ค์–‘ํ•œ iPhone ์žฅ์น˜ ๋ฐ ์—๋ฎฌ๋ ˆ์ดํ„ฐ

height: 100%; (์ด๊ฒƒ์€ ๋ชจ๋‘ ์ด์˜จ ํ•จ๋Ÿ‰์ž„)๊ฐ€ ์žˆ๋Š” ํ…์ŠคํŠธ ์˜์—ญ์ด ์žˆ์—ˆ๊ณ  ์ด์˜จ ํ—ค๋”๋Š” ํ…์ŠคํŠธ ์˜์—ญ์— ์ดˆ์ ์ด ๋งž์ถฐ์งˆ ๋•Œ๋งˆ๋‹ค ์‹œ์•ผ์—์„œ ์ถ•์†Œ๋ฉ๋‹ˆ๋‹ค. ๋‚ด ์ˆ˜์ •์€ height: auto; min-height: 25%; ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  height: 100%; margin: 0; padding: 0; ๋ฐ (click)=focusTextArea() ์žˆ๋Š” div ์•ˆ์— ํ…์ŠคํŠธ ์˜์—ญ์„ ๋„ฃ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•ฝ๊ฐ„ ๋ฒ„๋ฒ…๊ฑฐ๋ฆฌ๊ณ  ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์„ ์›ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. +1:

์ด ํ”Œ๋Ÿฌ๊ทธ์ธ ionic cordova ํ”Œ๋Ÿฌ๊ทธ์ธ add cordova-plugin-ionic-webview --save๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๋•๋ถ„์— ๋‚ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๋ฉ”์ผ ์ž‘์„ฑ๊ธฐ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•จ๊ป˜ ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ๊ฒฝํ—˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

cordova-plugin-statusbar๋ฅผ ๋ฒ„์ „ 2.2.1์—์„œ 2.3.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@jvhe123 ๋ฐฉ๊ธˆ ํ•ด๋ดค๋Š”๋ฐ v2.3.0์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ์š”, v2.2.3์„ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฑด๊ฐ€์š”?

@glenr4
image

  • ์ฝ”๋ฅด๋„๋ฐ” ํ”Œ๋Ÿฌ๊ทธ์ธ ํ‚ค๋ณด๋“œ 1.2.0
  • ์ด์˜จ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ‚ค๋ณด๋“œ 2.2.1

iPhone X์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ‚ค๋ณด๋“œ๋ฅผ ์—ด๋ฉด ๋จธ๋ฆฌ๊ธ€์ด ์œ„๋กœ ์˜ฌ๋ผ์™€ ๊ฑฐ์˜ ํŽ˜์ด์ง€์—์„œ ๋ฒ—์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค.

์˜ํ–ฅ์„ ๋ฐ›๋Š” ํŽ˜์ด์ง€์˜ JavaScript ํŒŒ์ผ์— eventListener๋ฅผ ๋„ฃ์–ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

document.addEventListener('deviceready', function(e){ window.addEventListener('native.keyboardshow', function () { cordova.plugins.Keyboard.disableScroll(true); }); });

์ด๊ฒƒ์€ ์ €์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ๊ณ , ์—ฌ๋Ÿฌ๋ถ„ ์ค‘ ํ•œ ๋ช…์—๊ฒŒ๋„ ํšจ๊ณผ๊ฐ€ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด ๋ฌธ์ œ๋Š” ์›๋ž˜ ๋ฌธ์ œ์™€ ๊ด€๋ จ์ด ์—†๋Š” ๋Œ“๊ธ€์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ž ๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์—ฌ์ „ํžˆ ์ตœ์‹  ๋ฒ„์ „์˜ Ionic์—์„œ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ ์ƒˆ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค๊ณ  ํ…œํ”Œ๋ฆฟ์ด ์™„์ „ํžˆ ์ฑ„์›Œ์กŒ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

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