当前位置: 移动技术网 > IT编程>移动开发>IOS > VIVO手机上del键无效OnKeyListener不响应的原因及解决方法

VIVO手机上del键无效OnKeyListener不响应的原因及解决方法

2019年07月24日  | 移动技术网IT编程  | 我要评论

黑鳍巨脂鲤,你离开的真相,洛葛仙妮

在修改交易密码界面用到一个自定义输入框

类似这种(原谅丑了点~)

结果昨天有用户反馈在vivo手机上回出现,del键无效的问题~~~

最后发现是:editext的onkeylistener没有响应。

最后搜搜了一下,找到了解决方案:重写editextview的inputconnectionwrapper的方法后解决了问题:

代码如下:

public class zanyedittext extends edittext {
  private ondelkeyeventlistener delkeyeventlistener;
  public zanyedittext(context context, attributeset attrs, int defstyle) {
    super(context, attrs, defstyle);
  }
  public zanyedittext(context context, attributeset attrs) {
    super(context, attrs);
  }
  public zanyedittext(context context) {
    super(context);
  }
  @override
  public inputconnection oncreateinputconnection(editorinfo outattrs) {
    return new zanyinputconnection(super.oncreateinputconnection(outattrs),
        true);
  }
  private class zanyinputconnection extends inputconnectionwrapper {
    public zanyinputconnection(inputconnection target, boolean mutable) {
      super(target, mutable);
    }
    @override
    public boolean sendkeyevent(keyevent event) {
      if (event.getaction() == keyevent.action_down
          && event.getkeycode() == keyevent.keycode_del) {
        if (delkeyeventlistener != null) {
          delkeyeventlistener.ondeleteclick();
          return true;
        }
      }
      return super.sendkeyevent(event);
    }
    @override
    public boolean deletesurroundingtext(int beforelength, int afterlength) {
      if (beforelength == 1 && afterlength == 0) {
        return sendkeyevent(new keyevent(keyevent.action_down,
            keyevent.keycode_del))
            && sendkeyevent(new keyevent(keyevent.action_up,
            keyevent.keycode_del));
      }
      return super.deletesurroundingtext(beforelength, afterlength);
    }
  }
  /**
   *
   * 功能描述: <br>
   * 〈功能详细描述〉
   *
   * @param delkeyeventlistener edittext删除回调
   */
  public void setdelkeyeventlistener(ondelkeyeventlistener delkeyeventlistener) {
    this.delkeyeventlistener = delkeyeventlistener;
  }
  public interface ondelkeyeventlistener {
    void ondeleteclick();
  }
}

参考:

以上所述是小编给大家介绍的vivo手机上del键无效onkeylistener不响应的原因及解决方法,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网