在 ios 钛上隐藏键盘
Hide keyboard on ios titanium
在我的 Titanium 应用程序上,我有一个包含许多字段(文本字段等...)的表单,当我关注文本字段时,它会显示 ios 键盘,我想在单击某个地方时隐藏它window :
<Alloy>
<Window id="home" >
<View id="form">
<Require type="view" id="myViewForm" src="form/etape_1" />
</View>
</Window>
</Alloy>
在 myViewForm 内部:
<Alloy>
<View>
<TextField id="name" hintText="name"/>
<TextField id="telephone" hintText="Téléphone"/>
</View>
</Alloy>
注意:如您所见,我有一个 ID 为 "telephone" 的文本字段,它将仅显示数字。
在我的控制器主页文件上:
/*-----------------------------------------
| | EVENT LISTENER CLICK ON WINDOW
-------------------------------------------*/
$.home.addEventListener("click", hideSoftKeyboard);
/*-----------------------------------------
| | HIDE KEYBOARD
-------------------------------------------*/
function hideSoftKeyboard(e){
if(Ti.Platform.osname === 'android'){
Ti.UI.Android.hideSoftKeyboard();
} else {
$.home.textField.blur();
}
}
在 android 上运行良好,但在 Ios 上出现以下错误:
[ERROR] : Script Error {
[ERROR] : column = 103;
[ERROR] : line = 12;
[ERROR] : message = "undefined is not an object (evaluating '$.home.textField.blur')";
[ERROR] : stack = hideSoftKeyboard;
[ERROR] : }
有人可以帮助我吗?谢谢。
试试
$.myViewForm('name').blur();
$.myViewForm('telephone').blur();
代替$.home.textField.blur();
$.myViewForm('name')
将获得 ID 为 name
的视图,这将是您的文本字段,然后您可以在其上调用 blur()
方法。
希望对您有所帮助。
这是适合您的代码:
index.js
$.home.addEventListener("click", hideSoftKeyboard);
$.home.open();
function hideSoftKeyboard(e){
if(OS_ANDROID){
Ti.UI.Android.hideSoftKeyboard();
} else {
$.myViewForm.name.blur();
$.myViewForm.telephone.blur();
}
}
- 但也要记住,如果你不设置
bubbleParent="false"
上的文本字段,然后您在 window 上的点击事件将在您点击文本字段时立即触发。
- 所以在整体上使用点击事件要小心window。
- 如果您在 window 上使用点击事件的目的只是为了使用 phone 布局键盘隐藏 iOS 上的键盘,那么我建议您看看这个 属性 TextField keyboardToolbar 这将很好地满足您的目的。
这是隐藏电话 phone 键盘的完整跨平台代码。
index.js
$.home.open();
myViewForm.xml
<Alloy>
<View layout='vertical'>
<TextField id="MOBILE_FIELD" class="phone fields" platform="android" />
<TextField id="MOBILE_FIELD" class="phone fields" platform="ios">
<KeyboardToolbar>
<Toolbar>
<Items>
<FlexSpace />
<Button title="DONE" onClick="hideKeyboard" />
</Items>
</Toolbar>
</KeyboardToolbar>
</TextField>
</View>
</Alloy>
myViewForm.tss
// to accept only phone numbers, with + sign also..
".phone[platform=ios]" : {
keyboardType : Ti.UI.KEYBOARD_TYPE_NUMBER_PAD,
}
".phone[platform=android]" : {
inputType : [Ti.UI.INPUT_TYPE_CLASS_NUMBER]
}
".fields" : {
top : 30
width : '80%',
height : 50,
borderColor : 'black',
borderWidth : 2
}
myViewForm.js
function hideKeyboard() {
$.MOBILE_FIELD.blur();
}
在我的 Titanium 应用程序上,我有一个包含许多字段(文本字段等...)的表单,当我关注文本字段时,它会显示 ios 键盘,我想在单击某个地方时隐藏它window :
<Alloy>
<Window id="home" >
<View id="form">
<Require type="view" id="myViewForm" src="form/etape_1" />
</View>
</Window>
</Alloy>
在 myViewForm 内部:
<Alloy>
<View>
<TextField id="name" hintText="name"/>
<TextField id="telephone" hintText="Téléphone"/>
</View>
</Alloy>
注意:如您所见,我有一个 ID 为 "telephone" 的文本字段,它将仅显示数字。
在我的控制器主页文件上:
/*-----------------------------------------
| | EVENT LISTENER CLICK ON WINDOW
-------------------------------------------*/
$.home.addEventListener("click", hideSoftKeyboard);
/*-----------------------------------------
| | HIDE KEYBOARD
-------------------------------------------*/
function hideSoftKeyboard(e){
if(Ti.Platform.osname === 'android'){
Ti.UI.Android.hideSoftKeyboard();
} else {
$.home.textField.blur();
}
}
在 android 上运行良好,但在 Ios 上出现以下错误:
[ERROR] : Script Error {
[ERROR] : column = 103;
[ERROR] : line = 12;
[ERROR] : message = "undefined is not an object (evaluating '$.home.textField.blur')";
[ERROR] : stack = hideSoftKeyboard;
[ERROR] : }
有人可以帮助我吗?谢谢。
试试
$.myViewForm('name').blur();
$.myViewForm('telephone').blur();
代替$.home.textField.blur();
$.myViewForm('name')
将获得 ID 为 name
的视图,这将是您的文本字段,然后您可以在其上调用 blur()
方法。
希望对您有所帮助。
这是适合您的代码:
index.js
$.home.addEventListener("click", hideSoftKeyboard);
$.home.open();
function hideSoftKeyboard(e){
if(OS_ANDROID){
Ti.UI.Android.hideSoftKeyboard();
} else {
$.myViewForm.name.blur();
$.myViewForm.telephone.blur();
}
}
- 但也要记住,如果你不设置
bubbleParent="false"
上的文本字段,然后您在 window 上的点击事件将在您点击文本字段时立即触发。 - 所以在整体上使用点击事件要小心window。
- 如果您在 window 上使用点击事件的目的只是为了使用 phone 布局键盘隐藏 iOS 上的键盘,那么我建议您看看这个 属性 TextField keyboardToolbar 这将很好地满足您的目的。
这是隐藏电话 phone 键盘的完整跨平台代码。
index.js
$.home.open();
myViewForm.xml
<Alloy>
<View layout='vertical'>
<TextField id="MOBILE_FIELD" class="phone fields" platform="android" />
<TextField id="MOBILE_FIELD" class="phone fields" platform="ios">
<KeyboardToolbar>
<Toolbar>
<Items>
<FlexSpace />
<Button title="DONE" onClick="hideKeyboard" />
</Items>
</Toolbar>
</KeyboardToolbar>
</TextField>
</View>
</Alloy>
myViewForm.tss
// to accept only phone numbers, with + sign also..
".phone[platform=ios]" : {
keyboardType : Ti.UI.KEYBOARD_TYPE_NUMBER_PAD,
}
".phone[platform=android]" : {
inputType : [Ti.UI.INPUT_TYPE_CLASS_NUMBER]
}
".fields" : {
top : 30
width : '80%',
height : 50,
borderColor : 'black',
borderWidth : 2
}
myViewForm.js
function hideKeyboard() {
$.MOBILE_FIELD.blur();
}