怎么python获取当前光标 input 获取焦点 光标位置

匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。UITextField 光标的位置设置获取
通过给UITextField 加一个拓展
//#import &UITextField+ExtentRange.h&
#import &UIKit/UIKit.h&
@interface UITextField (ExtentRange)
- (NSRange) selectedR
- (void) setSelectedRange:(NSRange)
// #import &UITextField+ExtentRange.m&
#import &UITextField+ExtentRange.h&
@implementation UITextField (ExtentRange)
- (NSRange) selectedRange
UITextPosition* beginning = self.beginningOfD
UITextRange* selectedRange = self.selectedTextR
UITextPosition* selectionStart = selectedRange.
UITextPosition* selectionEnd = selectedRange.
const NSInteger location = [self offsetFromPosition:beginning toPosition:selectionStart];
const NSInteger length = [self offsetFromPosition:selectionStart toPosition:selectionEnd];
return NSMakeRange(location, length);
- (void) setSelectedRange:(NSRange) range
// 备注:UITextField必须为第一响应者才有效
UITextPosition* beginning = self.beginningOfD
UITextPosition* startPosition = [self positionFromPosition:beginning offset:range.location];
UITextPosition* endPosition = [self positionFromPosition:beginning offset:range.location + range.length];
UITextRange* selectionRange = [self textRangeFromPosition:startPosition toPosition:endPosition];
[self setSelectedTextRange:selectionRange];
本文已收录于以下专栏:
相关文章推荐
iOS获得UITextView当前光标所在的位置.很简单:
定义两个变量
    UITextView * _inputTV;
    NSRange _
获取UITextField当前光标的位置,找了好久都没有找到合适的方法,后面阅读文档写出来了,就详细写出来,分享给大家。
转自:http://blog.csdn.net/xyt8023y/article/details/
在iOS开发中,有时候需要完全自主的定义键盘,用于完整的单...
简介在iOS开发中,有时候需要完全自主的定义键盘,用于完整的单词输入,例如计算机应用中,需要一次性的输入sin(,在移动光标时要完整的跳过sin(,在删除时也要完整的删除,这就需要对光标的位置进行精确...
转自://TYAttributedLabel
TYAttributedLabel 简单,强大的属性文本的控件(无需了解CoreText),支...
★抽奖腾 讯 抽 奖 一 线【60-55832】抽 奖 二 线【-388】活 动 热 线【-388】 幸 运 用 户 必 须 遵 守 领 奖 程 序 ...
转自:/home.php?mod=space&uid=454498&do=blog&id=377338
1、OpenCV中文网站
http://w...
textField中光标贴近最左边会不太美观。textField.setValue(NSNumber(int: 12), forKey: &paddingLeft&)
目的是:譬如银行卡号的输入,最多输入19位数字,四个数字之间用空格间隔。删除操作后格式不变,光标在空格后执行删除,则将空格前的数字删除,光标定位在空格前。
1.实现一个类别,可将UITextFiel...
由于UITextField的光标位置 是紧贴左边框的, 看起来不美观,如下图
可以通过设置UITextField的leftView 让其右移 如下图:
UITextFie...
他的最新文章
讲师:刘文志
讲师:陈伟
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)主题信息(必填)
主题描述(最多限制在50个字符)
申请人信息(必填)
申请信息已提交审核,请注意查收邮件,我们会尽快给您反馈。
如有疑问,请联系
CSDN &《程序员》编辑/记者,投稿&纠错等事宜请致邮
你只管努力,剩下的交给时光!
如今的编程是一场程序员和上帝的竞赛,程序员要开发出更大更好、傻瓜都会用到软件。而上帝在努力创造出更大更傻的傻瓜。目前为止,上帝是赢的。个人网站:。个人QQ群:、
个人大数据技术博客:1294人阅读
Edittext(3)
有时候需要让光标显示在EditText的指定位置或者选中某些文本。同样,为了方便用户输入以提升用户体验,可能需要使EditText获得或失去焦点。
一、设置光标到指定位置
EditText et = (EditText ) findViewById (R. id. etTest ) ;
et. setSelection ( 2 ) ;
Android中EditText设置光标到指定位置
PS:当内容过多时,可通过设置光标位置来让该位置的内容显示在屏幕上。
二、隐藏光标
EditText et = (EditText ) findViewById (R. id. etTest ) ;
et. setCursorVisible ( false ) ;
三.、获得焦点时全选文本
EditText et = (EditText ) findViewById (R. id. etTest ) ;
et. setSelectAllOnFocus ( true ) ;
Android中EditText获得焦点时全选文本
PS:此方法可用来在用户点击EditText时,选中默认内容。
四、 获取和失去焦点
EditText et = (EditText ) findViewById (R. id. etTest ) ;
et. requestFocus ( ) ;
et. clearFocus ( ) ;
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:197323次
积分:2827
积分:2827
排名:第13401名
原创:112篇
转载:51篇
评论:22条
(3)(9)(11)(3)(14)(19)(1)(5)(2)(6)(4)(18)(47)(11)(3)(9)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'在输入编辑的业务场景中,可能会需要在光标当前的位置或附近显示提示选项。
比如社交评论中的@user功能,要确保提示的用户列表总是出现在@字符右下方,又或者是在自定义编辑器中
autocomplete 语法提示,都需要获取光标当前的位置作为参照点。
对于 WEB 开发来讲,当我们提到某某元素的位置,通常是指这个元素相对于父级或文档的像素单位坐标。而对于输入框中光标,就有了额外的区分。
相对于内容
相对于内容,光标位于第几个字符之后,姑且称之为字符位置吧。
相对于UI,也就是跟普通页面元素一样的像素位置了。
插入或替换内容
在前言提到的场景中,也有在光标位置处插入内容的需求,比如对选取文字加粗text
=& &strong&text&/strong&等。
textarea元素可以很容易获取到选择的一段文字的起止位置。如果当前没有选择文字,则两个位置值都为光标右侧字符的索引,从
textarea.selectionStarttextarea.selectionEnd
对于加粗功能,有了起止位置,就能获取到选择的文字内容,然后对内容进行替换。
由于textarea不能包含子元素,只有纯文本,所以基于textarea实现加粗只能像用
Markdown 标记语法实现。
var selectedText = textarea.value.substring(textarea.selectionStart, textarea.selectionEnd)textarea.setRangeText('**'+ selectedText +'**')
textarea.setRangeText(text:
String)&把选中的文字替换为其他内容。
contenteditable
也可能我们会使用contenteditable属性把一个元素变为可编辑元素。而上面所用的属性和函数都是普通元素所没有的,所以要换一种姿势实现。
还是以加粗功能为例。
var range = window.getSelection().getRangeAt(0)var strongNode = document.createElement('strong')strongNode.innerHTML = range.toString()range.deleteContents()range.insertNode(strongNode)
基于contenteditable的可编辑元素,其中的内容均为子元素,文本为textNode,加粗使用
HTML 元素,插入或替换是对元素的操作。
如果想使用操作内容的思路实现会比较麻烦,因为可以获取到的起止位置是基于子元素的。
contenteditable&hello&你好&&w&orld&
假如选中的文字是你好wor,调用相关
API 的输出如下。
var selection = window.getSelection()selection.anchorNode
selection.anchorOffset
selection.focusNode
selection.focusOffset
var range = selection.getRangeAt(0)range.startContainer
range.startOffset
range.endContainer
range.endOffset
最终可以获取到起止元素以及选中区域在开始元素内容中的字符位置和在结束元素内容中的字符位置。
其中的起止元素均为textNode类型,通过parentNode获取到包裹元素。
range.startContainer.parentNode
range.endContainer.parentNode
需要注意的是通过Selection和Rang获取到起止位置是有方向之分的,从左向右选择和从右向左选择得到的值是正好相反的。
基于光标像素位置创建内容
这里就要开始用像素位置,同样分为两种实现来讲。
contenteditable
可编辑元素获取光标像素位置就像textarea获取光标的字符位置一样简单。
var range = window.getSelection().getRangeAt(0)range.getBoundingClientRect()
这么具体的尺寸值,实现自动完成真是 So easy!
textarea其中的内容都是纯文本,在
DOM 中不存在相关的对象,对于像素位置就得另作他想了。
基于行高和字体大小计算
var end = textarea.selectionEndvar row = textarea.value.substring(0, end).match(/\r\n|\r|\n/).lengthvar top = lineHeight * (row + 1) + paddingTop + borderWidthvar leftText = textarea.value.split(/\r\n|\r|\n/)[row]
这个方案的思路是没问题的,但是考虑所有问题的成本太高。
虽然可以创建测试元素去计算文本宽度,但这个方案本身是从严谨的角度出发的。与其混在一块,直接用取巧的办法更简单。
文本不支持定位?那我创建 DOM 好了。
var end = textarea.selectionEndvar beforeText = textarea.value.slice(0, end)var afterText = textarea.value.slice(end)var escape = function(text) {
return text.replace(/&|&|`|&|&/g, '?').replace(/\r\n|\r|\n/g, '&br&')}var mirror = '&div class=&'+ textarea.className +'&&'
+ escape(beforeText)
+ '&span id=&cursor&&|&/span&'
+ escape(afterText)
+ '&/div&'textarea.insertAdjacentHTML('afterend', mirror)var cursor = document.getElementById('cursor')cursor.getBoundingClientRect()
原文地址:
本文已收录于以下专栏:
相关文章推荐
自定义光标将以上代码中的图片位置写上,但是光标图标默认是32*32像素,所以图片会因为像素的原因显示模糊,这样效果不好。还有一种方式是将鼠标光标隐藏,然后在鼠标移动坐标处不断的绘图(个人推荐使用)。I...
js操作input中光标位置
* 获取当前光标位置
Demo:点击下载Dmo
参考文献:
最近在segmentfault上看到它的日期输入控件,感觉挺有意思。好吧,动手写一个,加到自己的代码库里吧。
      然后问题来了,在上面图...
问题描述前段时间碰到一个需求:在表单中有一个字段叫金额,用户希望点击该输入框后(focus),能够自动为其金额数字后加上“万元”两个字。
虽然这个需求可以通过其他的设计方式规避(例如在文本框后加入“...
//objid:textarea的id   str:要插入的内容
function getValue(objid,str){
   var myField=document.getElemen...
New Document
在我们实现字符分隔时,在一定的程度上增加了用户体验。但是使用replace时,不能控制光标的位置。如何设置呢?
1、获取光标位置:var pos = this.selectionE/...
他的最新文章
讲师:刘文志
讲师:陈伟
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 python 光标移动 的文章

 

随机推荐