亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

IOS 開發之UITextField的光標操作擴展

2020-07-26 02:46:43
字體:
來源:轉載
供稿:網友

IOS 開發之UITextField的光標操作擴展

簡介

在iOS開發中,有時候需要完全自主的定義鍵盤,用于完整的單詞輸入,例如計算機應用中,需要一次性的輸入sin(,在移動光標時要完整的跳過sin(,在刪除時也要完整的刪除,這就需要對光標的位置進行精確控制,而ios并沒有相關的函數可以直接操作光標,只給出了選擇某個區域的功能,本文將介紹基于區域選擇設計的UITextField擴展,用于獲取光標位置以及移動光標。

實現原理

光標位置的獲取

在textField中,有一個屬性稱之為selectedTextRange,這個屬性為UITextRange類型,包含[start,end)兩個值,通過實驗我們可以發現,在沒有文字被選取時,start代表當前光標的位置,而end=0;當有區域被選擇時,start和end分別是選擇的頭和尾的光標位置,從0開始,并且不包含end,例如選擇了0~3的位置,則start=0,end=4。

光標的移動

通過setSelectedTextRange:方法可以設置選取范圍,我們只要設置一個選取單個字符的范圍,即可移動光標而不選中。

關鍵屬性

// 內容為[start,end),無論是否有選取區域,start都描述了光標的位置。@property (nullable, readwrite, copy) UITextRange *selectedTextRange;// 文首和文尾的位置@property (nonatomic, readonly) UITextPosition *beginningOfDocument;@property (nonatomic, readonly) UITextPosition *endOfDocument;

關鍵方法

// 獲取以from為基準的to的偏移,例如abcde,光標在c后,則光標相對文尾的偏移為-2。- (NSInteger)offsetFromPosition:(UITextPosition *)from toPosition:(UITextPosition *)toPosition;// 獲取以from為基準偏移offset的光標位置。- (nullable UITextPosition *)positionFromPosition:(UITextPosition *)position offset:(NSInteger)offset;// 創建一個UITextRange- (nullable UITextRange *)textRangeFromPosition:(UITextPosition *)fromPosition toPosition:(UITextPosition *)toPosition;

具體實現

下面的代碼為UITextField創建了一個分類(Category),包含三個方法,分別用于獲取光標位置、從當前位置偏移、從頭偏移。

#import <UIKit/UIKit.h>@interface UITextField (Extension)- (NSInteger)curOffset;- (void)makeOffset:(NSInteger)offset;- (void)makeOffsetFromBeginning:(NSInteger)offset;@end
#import "UITextField+Extension.h"@implementation UITextField (Extension)- (NSInteger)curOffset{  // 基于文首計算出到光標的偏移數值。  return [self offsetFromPosition:self.beginningOfDocument toPosition:self.selectedTextRange.start];}- (void)makeOffset:(NSInteger)offset{  // 實現原理是先獲取一個基于文尾的偏移,然后加上要施加的偏移,再重新根據文尾計算位置,最后利用選取來實現光標定位。  UITextRange *selectedRange = [self selectedTextRange];  NSInteger currentOffset = [self offsetFromPosition:self.endOfDocument toPosition:selectedRange.end];  currentOffset += offset;  UITextPosition *newPos = [self positionFromPosition:self.endOfDocument offset:currentOffset];  self.selectedTextRange = [self textRangeFromPosition:newPos toPosition:newPos];}- (void)makeOffsetFromBeginning:(NSInteger)offset{  // 先把光標移動到文首,然后再調用上面實現的偏移函數。  UITextPosition *begin = self.beginningOfDocument;  UITextPosition *start = [self positionFromPosition:begin offset:0];  UITextRange *range = [self textRangeFromPosition:start toPosition:start];  [self setSelectedTextRange:range];  [self makeOffset:offset];}@end

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人情趣片在线观看免费| 欧美孕妇孕交黑巨大网站| 国产精品福利片| 中文字幕亚洲欧美一区二区三区| 国产亚洲欧美另类中文| 国产成人在线播放| 亚洲精品456在线播放狼人| 日韩av免费观影| 高清亚洲成在人网站天堂| 视频直播国产精品| 国产精品一区二区三区成人| 亚洲国产精品久久精品怡红院| 国产精品三级美女白浆呻吟| 亚洲大尺度美女在线| 欧洲成人性视频| 国产噜噜噜噜噜久久久久久久久| 色悠久久久久综合先锋影音下载| 国产精品久久久久久久久久尿| 欧美日本高清一区| 亚洲一区二区三区四区在线播放| 亚洲一区二区自拍| 国内伊人久久久久久网站视频| 国产免费一区二区三区香蕉精| 91精品国产九九九久久久亚洲| 国内精品久久久久影院 日本资源| 久久99亚洲热视| 777777777亚洲妇女| 日本欧美精品在线| 欧美亚洲另类制服自拍| 日韩高清电影好看的电视剧电影| 久久精品视频亚洲| 国产精品青青在线观看爽香蕉| 欧美黑人性视频| 少妇高潮久久久久久潘金莲| 成人免费视频网址| 亚洲女人被黑人巨大进入al| 中文字幕精品影院| 97国产在线视频| 亚洲a∨日韩av高清在线观看| 国产成人一区二区三区| 国自在线精品视频| 91精品久久久久久久久中文字幕| 国产精品视频一区国模私拍| 亚洲性夜色噜噜噜7777| 久久久噜噜噜久久中文字免| 国产日产欧美a一级在线| 97香蕉超级碰碰久久免费软件| 亚洲第一男人av| 欧美国产视频一区二区| 亚洲天堂久久av| 国产99视频在线观看| 亚洲四色影视在线观看| 午夜精品三级视频福利| 国产欧美一区二区三区在线| 久久亚洲精品一区二区| 91tv亚洲精品香蕉国产一区7ujn| 久久男人的天堂| 欧美乱大交xxxxx| 亚洲成人动漫在线播放| 亚洲欧洲日本专区| 国产精品露脸自拍| 欧美最顶级的aⅴ艳星| 成人在线视频网站| 九色精品免费永久在线| 欧美激情成人在线视频| 亚洲国产欧美一区二区三区久久| 久久久久久12| 国产69精品久久久久久| 国产精品嫩草影院一区二区| 日韩av大片免费看| 日韩精品有码在线观看| 国产欧美一区二区三区四区| 91精品在线国产| 欧美性少妇18aaaa视频| 欧美激情成人在线视频| 欧洲s码亚洲m码精品一区| 久久久亚洲成人| 精品国产一区二区三区久久久| 亚洲成色www8888| 国产精品极品美女在线观看免费| 国产成人av网| 一区二区三区日韩在线| 美女扒开尿口让男人操亚洲视频网站| 91香蕉嫩草影院入口| 日韩欧美高清视频| 国内精品一区二区三区四区| 国产欧美婷婷中文| 91精品国产99久久久久久| 久久亚洲精品国产亚洲老地址| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲综合色av| 国产一区二区三区在线看| 成人黄在线观看| 日韩欧美一区二区在线| 在线精品高清中文字幕| 庆余年2免费日韩剧观看大牛| 日韩最新中文字幕电影免费看| www亚洲精品| 最近2019中文字幕在线高清| 97色伦亚洲国产| 8x海外华人永久免费日韩内陆视频| 亚洲免费中文字幕| 欧美在线视频免费播放| 久久99精品国产99久久6尤物| 欧美激情国产精品| 国产一区二区激情| 国产成人精品在线视频| 中文在线不卡视频| 91成人免费观看网站| 国产一区二区黄| 亚洲欧美国产一本综合首页| 日韩精品在线影院| 国产精品美乳一区二区免费| 久操成人在线视频| 欧美中文在线字幕| 国产成人小视频在线观看| 日韩av网址在线观看| 国产精品久久一区主播| 国产欧美日韩最新| 国产91精品久久久久久| 高清欧美性猛交| 亚洲第一精品夜夜躁人人躁| 久久久国产精品免费| 国内精久久久久久久久久人| 日韩精品极品毛片系列视频| 国产午夜精品免费一区二区三区| 久久精品亚洲精品| 日韩经典中文字幕| 久久久久久久久久久av| 搡老女人一区二区三区视频tv| 精品国偷自产在线| 伊人久久男人天堂| 国产美女精品视频| 亚洲一区二区三区视频播放| 亚洲国产黄色片| 亚洲最大的成人网| 伊人青青综合网站| 2025国产精品视频| 久久精品色欧美aⅴ一区二区| 黑人巨大精品欧美一区二区免费| 日本高清视频一区| 欧美一区二区三区图| 国产美女精品视频| 欧美性xxxxx极品| 成人美女av在线直播| 成人黄色中文字幕| 中文字幕亚洲一区二区三区五十路| 福利视频第一区| 日韩成人在线网站| 在线日韩日本国产亚洲| 欧美性猛交xxxxx免费看| 亚洲日韩欧美视频| 中文字幕欧美日韩va免费视频| 在线观看视频亚洲| 91精品国产自产在线老师啪| 57pao成人国产永久免费| 国产亚洲人成网站在线观看| 欧美亚洲国产日韩2020| 国产欧美一区二区三区久久| 精品亚洲精品福利线在观看| 亚洲黄色av女优在线观看| 国产99久久精品一区二区| 国产精品激情av在线播放| 久久资源免费视频|