ãŸã..ããã¯ãããèŠçŽããããšã«ã€ããŠã§ã^
ã¹ã¯ãªãŒã³ã·ã§ããïŒIonicããŒã¿1ãiPhone 4ïŒïŒ
ïŒ818ã®è€è£œ
ããããšãã ç§ãã¡ã¯beta2ã®ãããã®ããŒããŒãã®ãã°ã«åãçµãã§ããŸãã
ãããåŒãèµ·ããå¯èœæ§ã®ãããã®ã«ã€ããŠäœããªãŒãããããŸããïŒ
beta2ã®ãªãªãŒã¹ãèšç»ããŠãããšãã«ã¯ãç§ã®ã¢ããªã¯ãã§ã«å
¬éãããŠããŸã;-)
ããã¯ããã®åé¡ã®å®çšçãªãã¢ã³ã¹ãã¬ãŒã·ã§ã³ã§ãã
ãIonicãv1.0.0-beta.1ãã䜿çšãããGettingStartedãããã»ã¹ã§ããããã¹ãããŸããã
ç§ã®ã¹ãããïŒ
次ã«ã 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>
ããã§ïŒ
çµæã¯æ¬¡ã®ãšããã§ãã
ã芧ã®ãšãããããŒããŒãã¯ãã©ãŒã ãã¹ããŒã¿ã¹ããŒã«æŒãäžããŸãã
ã¡ãã£ãšãžã£ã¹ãã£ã³ãåé¡ã¯ããã ãšæããŸã
position: fixed
ãŸãã è©Šãposition:static
ãŸãã ç³ãèš³ãããŸããããä¿®æ£ãããã·ã¥ããŠããŸãããã®ã·ã§ãããäžããŠãããã圹ç«ã€ãã©ããç§ã«ç¥ãããŠãã ããã
2014幎4æ2æ¥æ°Žææ¥ååŸ4æ34åãJustin [email protected]æžã蟌ã¿ïŒ
ããã¯ããã®åé¡ã®å®çšçãªãã¢ã³ã¹ãã¬ãŒã·ã§ã³ã§ãã
ãIonicã
v1.0.0-beta.1 "ãç§ã®ã¹ãããïŒ
- npm install -g cordova ionic
- ã€ãªã³éå§statusBarTestãµã€ãã¡ãã¥ãŒ
- ã€ãªã³ãã©ãããã©ãŒã ã¯iOSãè¿œå ããŸã
次ã«ãapp.jsãç·šéããŠãåçŽãªãã©ãŒã ããå§ããŸããã ïŒ
<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>
ããã§ïŒ
- ã€ãªã³ãã«ãiOS
- ã€ãªã³ãšãã¥ã¬ãŒãiOS
çµæã¯æ¬¡ã®ãšããã§ãã
[ç»åïŒã¹ããŒã¿ã¹ããŒã®åé¡] https://cloud.githubusercontent.com/assets/57374/2597008/fb174690-baad-11e3-80aa-c88985210bcb.gif
ã芧ã®ãšãããããŒããŒãã¯ãã©ãŒã ãã¹ããŒã¿ã¹ããŒã«æŒãäžããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGi tHubhttpsïŒ//github.com/driftyco/ionic/issues/932#issuecomment-39386769ã§è¡šç€ºããŠãã ãã
ã
æ®å¿µãªãããããã¯åœ¹ã«ç«ã¡ãŸããã§ããã ãµã³ãã«ãããžã§ã¯ãã§ã¯ãããããstyle.cssãã«è¿œå ããŸããã
body, .ionic-body {
position: static;
}
Ionic CSSãã¡ã€ã«ã®åŸã«ãstyle.cssããå«ãŸããŠããŠããããã¯æ©èœããŸããã§ããã ãŸããSafariã®ãããã°ã§ã position: static
ãæ¬äœã«é©çšãããŠããããšã確èªããŸããã
ããã§ãéãæªãã£ãã®ã§ãäœã ããè©ŠããŠã¿ãŸããã
body {
position: static;
}
次ã«ããionic.cssããã¡ã€ã«ãæŽæ°ããŸããã ããã¯ãŸã æ©èœããŸããã§ããã
ãŸããããããŒãéçã«ããã€ããã ã£ãã®ã§ã¯ãªãããšæããŸããã ã ãããã£ãŠã¿ãŸããã ããã§ãéããªãã
ããããããiOS7.1ã ãã ãšã¯æããªãã£ãã çŸåšMacã«ã¢ã¯ã»ã¹ã§ããªãã®ã§ãææ¥æåã«èŠãŠãããŸãã ããã調ã¹ãŠãããŠããããšãã
äœæ¥ãã¢ãããããšãJustinïŒ+1ïŒ
èšå®ã«ãã£ãŠã¯ã .body
ãposition:static
ãã .pane
ãš.view
ã絶察äœçœ®ããããããäœãä¿®æ£ãããŸããã
ç§ãäœæããã«ã¹ã¿ã ã¢ãã€ã«ãŠã§ãã¢ããªã§ã¯ãããããŒã¯ãããã®éèŠãªäœçœ®ã®èŠçŽ ã®å€åŽã«ããå¿
èŠããããããŒããŒããäžãã£ãŠãããšãã«ããããŒèªäœãposition:fixed
ã«èšå®ããããŸãŸã«ãªããŸãã Androidã«ã¯ãããŒããŒãã®äžã«åãŸãããã«ãã¥ãŒãã¹ã¯ã€ãŒãºããadjust-resize
ãšãããªãã·ã§ã³ããããŸãã äžæ¹ãiOSã¯ããã¥ãŒããã³ããŠå
¥åãç»é¢ã®äžå€®ã«é
眮ããã ãã§ãã
Cordovaã«ã¯ãããã©ã«ãã§falseã«èšå®ãããŠãããKeyboardShrinksViewããšåŒã°ããèšå®ããããŸãã ç§ã¯ãŸã ãããèŠãŠããŸããããAndroidãadjust-resizeã§ãã§ã«è¡ã£ãŠããããšã«å¯ŸããiOSã®è§£æ±ºçã®ããã«èŠããŸã
ãããã®éãã®äž¡æ¹ã®éã«èª¿åãäœãåºãããšã¯ãä»äºã®1ã€ã®å°çã§ã
çŸåšããããã®åé¡ããã¹ãŠè§£æ±ºããããã«ãããŒããŒãã®ä¿®æ£ã«ç©æ¥µçã«åãçµãã§ããŸãã
ãã®ãã°ã¯ãæ®å¿µãªããæ¯æ©1717ã§ã¯ä¿®æ£ãããŠããŸããã
@tlancinaãæ°ã¥ããããšã®1ã€ã¯ãææ°ã®ã¿ããä¿®æ£ã§ã¯ãå ¥åãçŽæ¥ã¯ãªãã¯ããŠãããããŒãäžã«ç§»åããªãããšã§ãã ãããã£ãŠããã®åé¡ã®äžéšã¯è§£æ±ºãããšæããŸãã ãã ããå ¥åãã©ããããã©ãã«ãã¿ãããããšã300ããªç§åŸã«éããã€ãã£ãã¹ã¯ããŒã«ãå®è¡ãããŸãã ããã©ã«ãã®Ioniccssã®åäœæ¹æ³ã§ã¯ãã©ããã³ã°ã©ãã«ãšå®éã®å ¥åã®éããåºå¥ããã®ãé£ããããããããåžžã«åäœãããšã¯éããªãçç±ã®äžéšã§ããå¯èœæ§ããããŸãã ç§ã¯ãã®ãã¹ãããŒãžã䜿çšã
ä»ã®ãšããããã®çç±ã¯ãã©ãã«ã®ã¯ãªãã¯ã®ããã©ã«ãã劚ããŠããªãããã ãšæããŸãã å ¥åãã©ããããã©ãã«ã§e.preventDefaultïŒïŒãå®è¡ãããšãæåã®ã¿ããã§ããŒããŒããèªåçã«ãããã¢ããããŸããã ããã«ã€ããŠãã£ãšèª¿ã¹ãŠã¿ãŸããããããšãã
@adamdbradleyã¯ããã®ä¿®æ£ãå€éã«çºçãããšãã«ããã®ä¿®æ£ã®å¥ã®ãã¹ã¿ãŒãšããŠå¿é¡ããŸããã THXã
æ®å¿µãªããããã®åé¡ã¯1.0.0beta2ã§ã¯ãŸã 解決ãããŠããŸããã
@CoenWarmerç§ãã¡ã¯åé¡ãèªèããŠãããçŸåšãåãçµãã§ããŸãã ãŸããããŒããŒãã®åé¡ãå ±åãããšãã¯ããã©ãããã©ãŒã ããã©ãããã©ãŒã ããŒãžã§ã³ãæäŸããŠãã ãããããã¯ãã¢ãã€ã«ãã©ãŠã¶ããšãã¥ã¬ãŒã¿ããŸãã¯ã³ã«ããã®åé¡ã§ãããã³ã«ããã®å Žåã¯ãã«ã¹ã¯ãªãŒã³ãã©ããã§ãã ãã®ä»ã®æçšãªæ å ±ã«ã¯ãã©ãã«ãå ¥åãªã©ãã¿ããããèŠçŽ ãå ¥åã«å°éããããã«ãã€ã§ãæåã§ã¹ã¯ããŒã«ããå¿ èŠããã£ãããã¡ã¿ãã¥ãŒããŒãã«height = device-heightããããã©ãããèŠçŽ ãä»®æ³ããŒããŒããæçµçã«è¡šç€ºãããå Žæã®äžãããŒããŒãã衚瀺ãããå Žæã®ååããŸãã¯äžã§ã¹ã¯ããŒã«ããå¿ èŠããªãå Žæã§ãã ããããšã
ééïŒ
Android 4.4ããã³4.3ã§ãçºçãã1.0.0beta2ã䜿çšããŸãã iOS7.1ãšãŸã£ããåãç¶æ³ã ãããã£ãŠãå ¥åãã£ãŒã«ãã«ãã©ãŒã«ã¹ããããããŒããŒãããããã¢ãããããšãã¯ãäœãåé¡ã¯ãããŸãããå ¥åã«ãã©ãŒã«ã¹ããããå ¥åãã£ãŒã«ãã«æã眮ããŠäžäžã«ãã©ãã°ãå§ãããšããã¹ãŠã®ã³ã³ãã³ãããã¥ãŒã®å€ã«ç§»åã§ããŸãã ã åŸã§ã¹ã¯ãªãŒã³ãã£ã¹ããäœæããŸãã
ã¹ã¯ãªãŒã³ãã£ã¹ãïŒ https ïŒ
beta2ã®åŸãå°ããªç»é¢ïŒiphone3ãiphone4ãªã©ïŒã§ãã®åé¡ãçºçããŸãã
@zelphirãã®åé¡ãåçŸããcodepenãæäŸããŠããã ããŸããïŒ ã©ã¡ããiOS7.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ã«ãŒã¿ãŒã®å°é家ã§ã¯ãããŸããããããŒãžäžã®ãã¹ãŠã®ã³ã³ãã³ãã®åšãã«ã€ãªã³ã³ã³ãã³ããé 眮ããŠãããã圹ç«ã€ãã©ããã確èªããŠãã ããã
ç§ã¯ä»ç解ããŠããŸãããããã¯ããã²ãŒã·ã§ã³ããŒå šäœã®æãŸãããªãèŠèŠå¹æãæ»ããã¿ã³ãå«ããŠæ¶ããããšã«ã€ãªãããŸãããïŒ
ç§ã®ãŠãŒã¹ã±ãŒã¹ã§ã¯ãå ¥åãã£ãŒã«ããã€ãªã³ã³ã³ãã³ãå ã«é 眮ããå Žåã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>
ããã¯ã¢ãã¡ãŒã·ã§ã³ãå°ç¡ãã«ããŸããïŒ ãããã1ã€ãããªãããšãæ³å®ãããŠãããããè€æ°ã®ã³ã³ãã³ãé åããããšä»ã®ããšãæ··ä¹±ããå¯èœæ§ããããŸãã
@tlancinaããããããã1ã€ã®ããŒã·ã£ã«ã§2ã€ã®ã€ãªã³å«æå çŽ ã䜿çšããããšãèããŠããŸããã§ããã ãããã©ã®ããã«æ©èœããããèŠãŠãå ±åããŸãã
ç§ãåç §ããŠãããã©ã³ãžã·ã§ã³ã¢ãã¡ãŒã·ã§ã³ã®åé¡ã¯ãç¹å®ã®AndroidããŒãžã§ã³ã§çºçããŸãã èŠçŽ ã§positionïŒstaticã䜿çšãããã®ãã¥ãŒãã移è¡ããå ŽåãAndroid 4.1ãã4.3ïŒ100ïŒ ç¢ºå®ã§ã¯ãªããããã§ãã¯ããããšæããŸãïŒã§ã¯ãã¢ãã¡ãŒã·ã§ã³ãéå§ããããšããããã®èŠçŽ ã¯ããã¯ããããŸãŸã«ãªããŸãã ãããã£ãŠããã¹ãŠã®èŠçŽ ïŒã€ãªã³ã³ã³ãã³ããã¿ããããããŒããŒãªã©ïŒã¯å·Šã«ç§»åãå§ããŸãããäœçœ®ãæå®ããèŠçŽ ïŒstaticã¯ãã¢ãã¡ãŒã·ã§ã³ãå®äºãããŸã§åãå Žæã«æ®ããŸãã ããã¯iOSã§ã¯çºçããŸããã ããããç§ãã©ãã§ãéçãªäœçœ®ã䜿çšããããšãèºèºããçç±ã§ãã
@tlancinaå ¥åèŠçŽ ã1ã€ã®ã€ãªã³ã³ã³ãã³ãã«å ¥ããæ®ãã®ã³ã³ãã³ããå¥ã®2çªç®ã®ã€ãªã³ã³ã³ãã³ãã«å ¥ããŠã¿ãŸããã æ®å¿µãªãããinputèŠçŽ ã«å ¥åãããå ¥åã¯ãä»ã®ã€ãªã³ã³ã³ãã³ãã«ããng-repeatããã£ã«ã¿ãªã³ã°ããªããªããŸããã ä»ã®ææ¡ïŒ
@CoenWarmerã¯ãion-contentãåã¹ã³ãŒããäœæããããã§ãã
äž¡æ¹ã®ã³ã³ãã³ãã«ã³ã³ãããŒã©ãŒãé 眮ããŠã¿ãŠãã ããã ã³ã³ãããŒã©ãããã§ããå Žåã¯ãå ¥åã«ããªããã£ãã䜿çšããªãã§ãã ããã
ã¹ã³ãŒãç¶æ¿ã®ãããããåé¡ã«æ©ãŸãããŠããŸããå¥ã®åã¹ã³ãŒãã®ããªããã£ããã芪ã¹ã³ãŒãã§ã¯ãªãåã¹ã³ãŒãã«èšå®ãããŠããŸãã åãããŸããïŒ ããã§ãªãå Žåã¯ãlemmeãç¥ã£ãŠããã®ã§ããªã³ã¯ãèŠã€ããŠèª¬æããŸãã
ããç¥ããªããæ®å¿µãªããéããŸãã å ±æãããã§ããïŒ :)
ããããããããã¯çã«ããªã£ãŠããïŒ ããäžåºŠããçŽããŸãïŒ+1ïŒ
ãã@adamã å ¥åä»ãã®ããã¿ãŒã¯ã©ãã§ããïŒ ããã¯ã¹ã¯ããŒã«é åã®å€åŽã«ãããããåé¡ãçºçããŸãã ãããåé¿ããæ¹æ³ã¯ãããŸããïŒ
iPadïŒ7.1ïŒã§ããã®åé¡ãçºçããŸãã ionicã¯ãèšå®ãããŠããªãå Žåãæè¿ã®å€æŽåŸã«ãã¥ãŒããŒãã«height = device-heightãè¿œå ããããšã確èªããŸããã
ãã®ããããã£ã«ããããã¥ãŒããŒãã¯çŽ200pxïŒé«ãïŒãã倧ãããªããå®å
šã«ã¹ã¯ããŒã«å¯èœã«ãªããŸãã
ç§ããããåãé€ããšããããã¯åããŸãã
.viewãš.paneãpositionïŒfixedã«ãbodyãpositionïŒstaticã«èšå®ããã°ãã©ãããããããããä¿®æ£ã§ããŸãããã¡ã€ã³ãã¥ãŒããŒãã¯ãŸã 倧ãããæãäžäžã«åãããšå³åŽã«ã¹ã¯ããŒã«ããŒã衚瀺ãããŸãã
ã¡ãªã¿ã«...ããã¯å ¥åãã©ãŒã«ã¹ããç¬ç«ããŠããŸãã å ¥åãã©ãŒã«ã¹ã¯ã¹ã¯ããŒã«äœçœ®ã移åããã ããªã®ã§ãçµæã確èªã§ããŸãã
ããã¿ããªãããã§ã®çŸåšã®é²æ©ã¯äœã§ããïŒ
ã«ã¹ã¿ã ã€ãªã³ãã¡ã€ã«ãäœæããããããè¿œå ã®ãheight = device-heightããåé€ããŸããã
ãã®å€æŽåŸããã¹ãŠãæ£åžžã«æ©èœããŸãã CSSã®ä¿®æ£ã¯ããå¿
èŠãªããå
¥åãã£ãŒã«ãã®ã¿ããã«çŠç¹ãåãããããšãæ£ããæ©èœããŠããŸãã
iOSã§Keyboardãã©ã°ã€ã³ã䜿çšããŠããã次ã®ããšãè¡ããŸãã
Keyboard.shrinkView(true);
Keyboard.hideFormAccessoryBar(true);
å ¥åãå¥ã®ã€ãªã³ã³ã³ãã³ãã«é 眮ããŠããå ¥åããã©ãŒã«ã¹ããããšãã«ãããããŒããŒãå«ããã¥ãŒå šäœãWebãã¥ãŒã®äžã§ã¹ã¯ããŒã«å¯èœã«ããåäœãåæ¢ããããšã¯ãããŸããã 以åã®ã¹ã¯ãªãŒã³ãã£ã¹ããšåãåäœãçºçããŸãïŒ //www.dropbox.com/s/2g6b41n3s3vpj0s/2.mov
@ D3CK3Rã¯ãããŸããŸãªãã¥ãŒããŒãã·ããªãªããã¹ãŠ
@CoenWarmer IonicããŒããŒããã©ã°ã€ã³ãå®è¡ããŠ
Cordovaãããžã§ã¯ãå
ããcordova plugin add https://github.com/driftyco/ionic-plugins-keyboard.git
ãå®è¡ããããšã§ã€ã³ã¹ããŒã«ã§ããŸãã
@tlancinaããã¯ããŸã
ãã©ã°ã€ã³ã¯æ¬çªç°å¢ã®æºåãã§ããŠããŸããïŒ ãã®ãããžã§ã¯ãã¯ã¹ãã¢ã«å ¬éãããã°ãããªã®ã§ãã§ããã ãæ©ãå±éããããšæããŸãã
@CoenWarmerããªãã¯ç§ãããªãã®æåŸã®ã³ã¡ã³ããèŠãŠã©ãã»ã©å¹žãã ã£ãã
@adamdbradley @tlancina
ããïŒïŒïŒ
@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ã·ãã¥ã¬ãŒã¿ãŒ-iPhone6 / iOS 8.3
ã€ãªã³ããŒãžã§ã³1.0.0-rc.0
ã€ã³ã¹ããŒã«ãããŠãããã©ââã°ã€ã³ïŒ
ã¢ãŒãã«ããã®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ã§ãããã€ãªã³ããã¿ãŒããŒã®ã¿ããµããŒãããŠãããå ¥åã¯ã€ãªã³ãã¥ãŒã®ã³ã³ãã³ãå ã«ãããŸã
@tlancinaã³ã³ãã³ããionScrollã§ã©ããããå¿ èŠããããŸããïŒ http://ionicframework.com/docs/api/directive/ionScroll/
ion-content
ã¯ãã§ã«ã¹ã¯ããŒã«ãã¥ãŒãããã®ã§ã @ michaelknochã¯å¿
èŠãããŸããã åé¡ãåçŸããç°¡åãªcodepenãäœæã§ãã䜿çšããŠããé»è©±ãšOSãããã³ionic info
ã³ãã³ãããã®åºåïŒCLIã䜿çšããŠããå ŽåïŒãäœæã§ããŸããèŠãŠã
@tlancinaç§ã¯ãã®åé¡ã«çŽé¢ããŠããŸã
ã³ã«ããCLIïŒ5.2.0
IonicããŒãžã§ã³ïŒ1.1.0
Ionic CLIããŒãžã§ã³ïŒ1.6.4
Ionic App LibããŒãžã§ã³ïŒ0.3.8
ios-deployããŒãžã§ã³ïŒ1.7.0
ios-simããŒãžã§ã³ïŒ4.1.1
OSïŒMac OS XYosemite
ããŒãããŒãžã§ã³ïŒv0.12.7
XcodeããŒãžã§ã³ïŒXcode7.0ãã«ãããŒãžã§ã³7A176x
é»è©±-iphone4Sãios 7.0.6
ãcordova.plugins.Keyboard.disableScrollïŒtrueïŒãããããŒãæŒãããŸãŸã«ãããšãããŒããŒããããã¹ãé åã®äžã«è¡šç€ºãããŸãã ãããŠç§ã¯textareaïŒmsd-elasticã§äœ¿çšïŒãå
éšã«ä¿æããŸãã
ããŒããŒãã¢ã¿ããã䜿çšãããšãmsd-elasticã§å€±æããŸã:(
å©èšããããŸãã ïŒ
ionic.Platform.fullScreenïŒïŒã§è©ŠããŠã¿ãŸãã
ãããéããªã...ãŸãããã®fullScreenïŒïŒã¯iOSã§å¥ã®åé¡ãåŒãèµ·ãããŸã...
ããã¯ããããŒã®é«ããæžãããŸã... fullscreenïŒïŒãåŒã³åºããšãã«ãã®cssã¯é©çšãããªãã®ã§
.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 App LibããŒãžã§ã³ïŒ0.7.0
ios-deployããŒãžã§ã³ïŒ1.8.3
ios-simããŒãžã§ã³ïŒ5.0.4
OSïŒMac OS X El Capitan
ããŒãããŒãžã§ã³ïŒv0.12.2
XcodeããŒãžã§ã³ïŒXcode7.2ãã«ãããŒãžã§ã³7C68
Cordova 6.0.0ã«ã¢ããã°ã¬ãŒãããåŸãAndroidã§ãã®åé¡ãçºçãããã©ã°ã€ã³https://github.com/mesmotronic/cordova-plugin-fullscreenã®AndroidFullScreen.immersiveModeã¡ãœãããåŒã³åºããŠè§£æ±ºããŸãã
//ã·ã¹ãã UIãé衚瀺ã«ããŠé衚瀺ã®ãŸãŸã«ããŸãïŒAndroid 4.4以éã®ã¿ïŒ
AndroidFullScreen.immersiveModeïŒsuccessFunctionãerrorFunctionïŒ;
ãã®åé¡ã¯ãŸã çºçããŠããŸããã¢ããªã¯å®éã«ã¯å
šç»é¢ã§å®è¡ãããã¹ãã§ã¯ãªããããå
šç»é¢ã§è§£æ±ºããããšã¯é©åãªè§£æ±ºçã§ã¯ãããŸãããããã¹ãã®ããã«è©ŠããŠã¿ãŸãããã¢ããªã¯å
šç»é¢ã¢ãŒãã«ãªããŸãããç»é¢ããããŸã ã倧ãããã®ã§ãã¹ããŒã¿ã¹ããŒã®äžã«ããããããŒã§å°ãã¹ã¯ããŒã«ã§ããŸã...
å©ããŠãã ããïŒ
ãã®åé¡ããããŸããïŒ åé¿çã¯ãããŸããïŒ
Ionic2ã®iOSã§ãåãåé¡ãçºçããŸã
ç°å¢
ã³ã«ããCLIïŒ6.0.0
ã€ãªã³ããŒãžã§ã³ïŒ2.0.0-beta.3
Ionic CLIããŒãžã§ã³ïŒ2.0.0-beta.19
Ionic App LibããŒãžã§ã³ïŒ2.0.0-beta.9
ios-deployããŒãžã§ã³ïŒã€ã³ã¹ããŒã«ãããŠããŸãã
ios-simããŒãžã§ã³ïŒ5.0.6
OSïŒMac OS X El Capitan
ããŒãããŒãžã§ã³ïŒv5.7.1
XcodeããŒãžã§ã³ïŒXcode7.2.1ãã«ãããŒãžã§ã³7C1002
ã芧ã®ãšãããIonicã¢ããªã®ã¹ããŒã¿ã¹ããŒãšããããŒã®éã«ã¹ããŒã¹/ããã£ã³ã°ã¯ãããŸããã
ããŒããŒãã®æ°æ§ã®åé¡ãåã³ããã«ãããŸãã ããŒãã³ã°ã«ãã£ãŠå ¥åããã©ãŒã«ã¹ãããŠãããšãã«ã¹ã¯ããŒã«ãç¡å¹ã«ããããšã¯ã§ããŸãããä»®æ³ããŒããŒãã®ç¹å¥ãªãã¿ã³ã§ãã©ãŒã ãã£ãŒã«ãã«ãã©ãŒã«ã¹ãããšãããããŒãã¹ã¯ããŒã«ããŠè¡šç€ºãããªããšããå€ãåé¡ãåã³çºçããŸãã AndroidããŒããŒãã§ã¯ãå³äžã«ç·è²ã®ãã¿ã³ãããããã©ãŒã ã®æ¬¡ã®å ¥åã«åãæ¿ããããšãã§ããŸãã ã¹ã¯ããŒã«ããªãã«ããŠããå Žåã§ãããã¿ã³ã¯ãã¥ãŒãã¹ã¯ããŒã«ããŠãã©ãŒã«ã¹ãããå ¥åã衚瀺ãããã®çµæãããããŒãç»é¢ã®å€ã«è¡šç€ºãããŸãã
ããããã¹ãããã«ã¯ãæåã®å ¥åããã¥ãŒã«ãããããŒããŒãã衚瀺ãããç¶æ ã§ãã©ãŒã«ã¹ãããŠããå¿ èŠãããã2çªç®ã®å ¥åãæãç®ã®äžïŒããŒããŒãã®äžã®ã©ããïŒã«ããå¿ èŠããããŸãã ïŒåçã®ããã«ïŒç·è²ã®ãã¿ã³ãã¿ãããããšããã¥ãŒãã¹ã¯ããŒã«ãããããããŒãç»é¢ããæ¶ããŸãã
ã³ã«ãã6.3.0
ionic-plugin-keyboard 2.2.1
Android5ãæèŒããããã€ã¹ã§ãã¹ãæžã¿
Android24.0.1çšã«ãã«ã
ãã®ãã¿ã³ããªãã«ããããåé¡ãä¿®æ£ããããã®ã¢ã€ãã¢ã¯ãããŸããïŒ 100ïŒ ç¢ºä¿¡ã¯ãããŸããããããã¯ãcordovaã6以éã®ããŒãžã§ã³ã«ã¢ããã°ã¬ãŒãããåŸã«å§ãŸã£ããšæãããŸãã
@rafaellopãã®åé¡ã¯è§£æ±ºããŸãããïŒ
ãã®åé¡ã¯ãiOSã§é»è©±/ã«ã¡ã©ç»é¢ããã®ãã¡ã€ã«ã¢ããããŒããéãããšãã«è¡šç€ºãããŸãã
ã¡ãŒã«ã³ã³ããŒã¶ãŒã§ãã®åé¡ãçºçããŠããŸã
ç·šéãã¹ãŠãè©ŠããŠããã®åé¡ã解決ããªãå Žåã¯ã cordova-ios @ 4.2.1ã«æ»ã£ãŠã¿ãŠãã ãã
ãã®åé¡ã¯ç§ã«ããŸã çºçããŠããŸãããããã¯è§£æ±ºãããŠããŸããã
IOSã§ã¯ãã¹ããŒã¿ã¹ããŒãã¿ãããããšãIONIC2ã§ã€ãªã³ã³ã³ãã³ãå
šäœãç¹æ»
ããŸãããã®åé¡ã解決ããæ¹æ³ãææ¡ããŠãã ããã
ããããšãããããŸããã
æ²ããããšã«ã cordova-ios @ 4.2.1ã«æ»ã£ãŠã
å¥ã®æçš¿ãããcordova-statusbarãã©ã°ã€ã³ã2.2.1ãã2.2.0ã«ããŠã³ã°ã¬ãŒãã§ããåé¡ãä¿®æ£ãããããšã«æ°ã¥ããŸããã ç§ã®å Žåãåé¡ãåŒãèµ·ãããŠããã®ã¯ã¹ããŒã¿ã¹ããŒãã©ã°ã€ã³ã®ããã§ãã
ç§ã¯ãã®åé¡ãæ±ããŠããŸãã
height: 100%;
ïŒãã¹ãŠã€ãªã³ã³ã³ãã³ãïŒã®ããã¹ããšãªã¢ããããããã¹ããšãªã¢ã«ãã©ãŒã«ã¹ããããã³ã«ã€ãªã³ããããŒããºãŒã ã¢ãŠãããŠããŸããã ç§ã®ä¿®æ£ã¯ããããheight: auto; min-height: 25%;
ã«å€æŽããããã¹ãé åãheight: 100%; margin: 0; padding: 0;
ãš(click)=focusTextArea()
divå
ã«é
眮ããããš
ãã®ãã©ã°ã€ã³ã䜿çšããŠãã ãããioniccordovapluginadd cordova-plugin-ionic-webview--saveã ããã¯ç§ã®åé¡ã解決ããŸããããããšã
email-composerãã©ã°ã€ã³ãšçµã¿åãããŠåãåé¡ãçºçããŸããã
cordova-plugin-statusbarãããŒãžã§ã³2.2.1ãã2.3.0ã«ã¢ããã°ã¬ãŒãããããšã§ããã®åé¡ã解決ããŸããã
@ jvhe123è©ŠããŠã¿ãŸããããv2.3.0ãååšããªãããã§ãããv2.2.3ã®ããšã§ããïŒ
@ glenr4
ç§ã¯iPhoneXã§ãã®åé¡ãæ±ããŠããŸãããããŒããŒããéããšãããããŒãæŒãäžããããã»ãšãã©ããŒãžããå€ããŸããã
圱é¿ãåããããŒãžã®javaScriptãã¡ã€ã«ã«eventListenerãé 眮ããããšã§ããããä¿®æ£ããŸããã
document.addEventListener('deviceready', function(e){
window.addEventListener('native.keyboardshow', function () {
cordova.plugins.Keyboard.disableScroll(true);
});
});
ããã¯ç§ã«ãšã£ãŠã¯ããŸããããŸãããããŸãããã°ããªãã®äžäººã«ãšã£ãŠãããŸãããã§ãããã
åé¡ãããããšãïŒ ãã®åé¡ã¯ãå ã®åé¡ã«é¢é£ããªãã³ã¡ã³ããé²ãããã«ããã¯ãããŠããŸãã ãããææ°ããŒãžã§ã³ã®Ionicã§åŒãç¶ãåé¡ã«ãªãå Žåã¯ãæ°ããåé¡ãäœæãããã³ãã¬ãŒããå®å šã«å ¥åãããŠããããšã確èªããŠãã ããã
æãåèã«ãªãã³ã¡ã³ã
ãã®åé¡ã¯ãiOSã§é»è©±/ã«ã¡ã©ç»é¢ããã®ãã¡ã€ã«ã¢ããããŒããéãããšãã«è¡šç€ºãããŸãã