我有一个由onkeydown文本框事件触发的函数.如何判断用户是否按了退格键或del键?
我想检测何时按下回车键,在js加载后注入的HTML上.
要简单地检测按下回车键的时间,我可以这样做:
$('#textfield').keydown(function (e){
if(e.keyCode == 13){
console.log('Enter was pressed');
}
})
Run Code Online (Sandbox Code Playgroud)
这段代码适用于on(),但我担心这是低效的,因为jQuery会在每次按下一个键时检查.这有什么低效的吗?
$('body').on('keydown','#textfield', function(event) {
if (event.keyCode == 13) {
console.log('Enter was pressed');
}
}
Run Code Online (Sandbox Code Playgroud) 我有寻呼机的片段活动:
List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this, PastEventListFragment.class.getName(),bundle));
fragments.add(Fragment.instantiate(this, EventListFragment.class.getName(),bundle));
this.mPagerAdapter = new EventPagerAdapter(super.getSupportFragmentManager(), fragments);
//
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager1);
pager.setAdapter(this.mPagerAdapter);
pager.setCurrentItem(1);
Run Code Online (Sandbox Code Playgroud)
我赶上了KeyDown事件:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
}
return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
问题是:如何在我在此活动中实例化的所有片段中使用事件.谢谢
我不明白为什么这段代码不起作用.仅检测到退格键和返回键.监听器不会触发任何其他密钥.我的设备是Nexus One.
我试图覆盖活动的OnKeyDown方法,这更糟糕.唯一检测到的按钮是硬件后退按钮.
我看到有关使用TextWatcher和onTextChanged的建议,虽然这可能在某些情况下有用,但这不是真正的解决方法.例如,如果文本框为空,则不会检测用户是否按BackSpace(删除)按钮.那么任何想法?
TextView txtInput = (TextView)findViewById(R.id.txtInput);
txtInput.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
makeToast(keyCode + " key pressed");
return true;
}
});
Run Code Online (Sandbox Code Playgroud) 我正在使用onKeyListener来获取onKey事件.它可以正常使用普通键盘.但它不适用于软键盘.我只能获得数字而非字母的关键事件.有没有解决方法可以解决这个问题?任何形式的帮助将不胜感激.
我基本上试图实现的是自定义全局热键,换句话说,"当我按下某些按钮时会发生某些事情,无论哪个程序当前位于顶部".
我认为需要一项服务.
我有一个快速而肮脏的测试,只是告诉我如果它是活动窗口,那么按下了什么.
public boolean onKeyDown(int keyCode, KeyEvent event) {
char pop;
pop = (char)event.getUnicodeChar();
Toast.makeText(this, Character.toString(pop) , Toast.LENGTH_SHORT).show();
return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
但显然如果我改变窗口或进入文本框它不起作用.如果我将它直接粘贴到服务(或imputmethodservice)并启动所述服务没有任何反应.(可能需要一些权限吗?)我出错的任何建议?或者更好的方法来捕捉按下哪个按钮?
谢谢!
在WPF应用程序中,我有一个我从TextBox派生的控件,如下所示:
public class SelectableTextBlock : TextBox
{
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
e.Handled = false;
}
}
Run Code Online (Sandbox Code Playgroud)
在向TextBox输入空格时,或者在按Backspace时,不会调用OnKeyDown方法,但会触发其他输入,包括正常的可打印字符(例如'a')和修饰键(例如).
我正在使用此控件并将IsReadOnly设置为true,因此我可以显示可选择的,不可编辑的文本.在WPFToolkit的DataGrid中使用的控件,我希望KeyDown事件向上传播数据网格,即使SelectableTextBlock具有焦点,这就是我使用自定义控件将事件明确标记为未处理的原因.
问题是该事件甚至没有让我控制某些键.我不能只在DataGrid中使用OnPreviewKeyDown来解决这个问题,因为我确实希望数据网格中使用的其他控件吞下空间KeyDown事件.
有谁知道如何让空格键传播的KeyDown事件?
谢谢.
我刚刚升级了我的应用程序以使用新发布的v22.1.0 AppCompat,现在onKeyDown并且onKeyUp在按下菜单键时不会触发.其他键正确触发onKeyDown和onKeyUp,但是当我按下菜单键没有反应.如果我降级到v22.0.0,一切都恢复正常.
我如何解决它?
我有一个AutoCompleteTextView用来从长列表中选择一个项目.用户应该只能从列表中选择预定的项目.他们不应该进入他们自己的项目.
我检查以确保他们只提交列表中的项目的方法是setOnItemClickListener用来触发布尔标志.问题是在布尔标志设置为true后,他们仍然可以编辑项目的选定文本.我需要检测到这一点并再次将布尔标志设置为false.我该怎么做呢.我已经看到了使用的建议onKeyDown,但我不确定如何实现这一点.
android list onkeydown autocompletetextview onitemclicklistener
我想创建一个照片/视频捕获应用程序.
我创建了一个CaptureView扩展SurfaceView并放在主窗体中的类.
主窗体的活动具有onCreateOptionsMenu()创建菜单的方法.菜单工作正常,但后来我尝试实现一个方法onKeyDown:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_DOWN) {
switch(keyCode) {
case KeyEvent.KEYCODE_CAMERA:
videoPreview.TakePicture();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
该菜单不再出现,并且该方法不会捕获onKeyDown事件.
有谁知道这个问题可能是什么原因?
onkeydown ×10
android ×7
javascript ×2
android-view ×1
c# ×1
fragment ×1
jquery ×1
list ×1
listener ×1
onkeypress ×1
onkeyup ×1
textbox ×1
wpf ×1