1. 程式人生 > >iOS TextField 獲取游標的位置

iOS TextField 獲取游標的位置

最近在做一個專案的時候,發現沒有獲取游標的方法。進過研究後,出來分享給大家:

1、新建一個工程,我使用的Xcode 7.2 也就是 iOS9.2,託轉一個TextField;


2、新建一個類別,對TextFIeld進行一個擴充套件,也就是新建一個類別;


這是.h檔案



#import <UIKit/UIKit.h>

@interface UITextField (ExtentRange)

- (NSRange)selectedRange;

- (void)setSelectedRange:(NSRange)range;

@end

然後.m檔案:
#import "UITextField+ExtentRange.h"

@implementation UITextField (ExtentRange)

- (NSRange) selectedRange
{
    UITextPosition* beginning = self.beginningOfDocument;
    
    UITextRange* selectedRange = self.selectedTextRange;
    UITextPosition* selectionStart = selectedRange.start;
    UITextPosition* selectionEnd = selectedRange.end;
    
    const NSInteger location = [self offsetFromPosition:beginning toPosition:selectionStart];
    const NSInteger length = [self offsetFromPosition:selectionStart toPosition:selectionEnd];
    
    return NSMakeRange(location, length);
}

- (void) setSelectedRange:(NSRange) range
{
    UITextPosition* beginning = self.beginningOfDocument;
    
    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];
}

@end

大家也看到了,就是基本上一個重寫的Set 和 Get 方法,值得一提的是這裡所定義的
selectedRange
變數,它在UITextView是有這個屬性的,但是在UItextField中確實沒有的。

那麼我們現在來對這個方法進行測試:

#import "ViewController.h"
#import "UITextField+ExtentRange.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UITextField *textField;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    UITextField *tmpTextField = [[UITextField alloc]initWithFrame:CGRectMake(30, 30, 100, 40)];
    
    [self.view addSubview:tmpTextField];
    
    tmpTextField.text = @"121";
    [tmpTextField becomeFirstResponder];
    
    NSRange range = [tmpTextField selectedRange];
    
    NSLog(@"%lu and %lu", (unsigned long)range.location, (unsigned long)range.length);
    
    self.textField.text = @"ddwa";

    NSLog(@"localhost is %lu, length is %lu", (unsigned long)[self.textField selectedRange].location, (unsigned long)[self.textField selectedRange].length);
    
    [self.textField setSelectedRange:NSMakeRange(0, 1)];
    
    NSLog(@"localhost is %lu, length is %lu", (unsigned long)[self.textField selectedRange].location, (unsigned long)[self.textField selectedRange].length);
    
    [self.textField addTarget:self action:@selector(didChangeWithTextField:) forControlEvents:UIControlEventEditingChanged];
}


- (void)didChangeWithTextField:(UITextField *)textField{
    
    NSRange range = textField.selectedRange;
    
    NSLog(@"%lu and %lu", (unsigned long)range.location, (unsigned long)range.length);
    
    NSLog(@" ... ");
    
}


可以看到  我在UIVIewDidLoad中寫的變數,所得到的座標位置都是(0 , 0);

然後我對這個textField添加了一個當值改變的一個監聽,每次輸入數值的時候,會有看到打印出來資料的變化。

相關推薦

iOS TextField 獲取游標位置

最近在做一個專案的時候,發現沒有獲取游標的方法。進過研究後,出來分享給大家: 1、新建一個工程,我使用的Xcode 7.2 也就是 iOS9.2,託轉一個TextField; 2、新建一個類別,對TextFIeld進行一個擴充套件,也就是新建一個類別; 這是.h檔案

自定義鍵盤中的刪除鍵TextField游標位置獲取以及設定游標的位子

最近做了一個自定義的鍵盤,輸入框是一個textField,讓人頭疼的問題是,點選刪除按鈕,通過方法,要不就從第一個字元刪,要不就是最後一個,反正就是不能在指定的位置刪除,經過一番努力在網上終於找到方法了 [textField  deleteBackward] ,這一句程式碼

獲取游標位置

原文:https://blog.csdn.net/mafan121/article/details/78519348 html <iframe id="editor" width="600px" height="400px" style="border:solid 1px;"><

文字框獲取游標位置 ---- ctrl+enter換行

業務需求:按下enter鍵傳送資訊,按下ctrl+enter鍵換行 下面程式碼是網上找的資料 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtm

獲取游標位置方法研究

獲取游標位置可以使用GetCaretPos函式獲取位置,也可以通過GetGUIThreadInfo函式獲取位置。1、GetCaretPos函式獲取游標位置,實現程式碼:     CPoint point;     CRect rect;     GetWindowRect(&rect);     HW

IOS UITextField 設定游標位置

textField.leftView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 8, 0)] autorelease];  textField.leftView.userInteractionEnabled =

C#獲取游標位置

摘自:http://zhidao.baidu.com/question/491979457.html 如果以下的文章都不是你想要的看一下 這裡 我想在一個C#程式執行的時候獲取游標的位置!不管這個游標是在程式內部還是外部都能在游標處輸入文字,就像如果游標在記事本上就在記事本

javascript獲取游標位置以及設定游標位置

在專案開發中經常遇到input等設定游標位置到最後的問題,今天我查了一下Google,找到了在IE、Firefox、Opera等主流瀏覽器的獲取游標位置(getCursortPosition)以及設定游標位置(setCursorPosition)的函式。 function

關於文字輸入框獲取游標位置以及指定位置插入內容

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <script

fixed定位 input在IOS裝置上游標位置異常問題

頁面是個長頁面,點選頁面不同部分,會彈出彈窗,如果用absolute定位,那麼彈窗的位置就難以定位,因而決定採用fixed定位,此時在IOS 11.2.x 系統中就 會出現點選input游標位置異常的問題。 異常如圖所示: 原因分析 input的父元素是採

iOS 【手勢獲取cell位置】【點擊cell獲取indexpath】

tint oid dex 實現 con tab 如何獲取 self tar 如何獲取手指點擊的cell位置: 1,首先創建一個長按(可以是點擊或者其他手勢) UILongPressGestureRecognizer * longgr = [[UILongPressGestu

iOS獲取當前位置經緯度

最近在做一個公交車查詢的專案,需要定位到當前位置以便進行附近站點查詢,和大家分享一下怎樣獲取自己當前位置的經緯度 首先新增CoreLocation.framework庫: 引用標頭檔案並宣告CLLocationManagerDelegate代理: 接下來宣告要用到的變數:

iOS獲取使用者位置

第一種是使用期間獲取位置: Info.plist裡面新增Privacy - Location When In Use Usage Description及描述文字比如:XX想使用您的地理位置資訊 調起詢問使用者:locationManager.requestWhenInUseAuthorization()

JQ外掛:獲取文字框(textarea)內的所選字元和游標位置索引值-selection

(function($){ $.fn.selection = function(){ var s,e,range,stored_range; if(this[0].selectionStart == undefined){ var selection=document.selection; i

quill-editor 在ios下editor不能夠聚焦輸入,插入圖片連結改變游標位置, ios下不能貼上

1) quill-editor 在ios下editor不能夠聚焦輸入 加上@blur 和 onEditorBlur方法,ios的富文字編輯框點選聚焦可以生效 <quill-editor re

JavaScript 獲取輸入時的游標位置及場景問題

前言 在輸入編輯的業務場景中,可能會需要在游標當前的位置或附近顯示提示選項。 比如社交評論中的@user功能,要確保提示的使用者列表總是出現在@字元右下方,又或者是在自定義編輯器中 autocomplete 語法提示,都需要獲取游標當前的位置作為參照點。 兩種

[IOS開發記錄]ios10下使用Xcode8.2獲取gps位置資訊(swift3.0)

CoreLocation是iOS中一個提供裝置定位的框架。通過這個框架可以實現定位處理,從而獲取位置資料,比如經度、緯度、海拔資訊等。 預設環境為Xcode8.2和swift3.0 第一步:先在i

IOS 地圖定位,標記位置,獲取經緯度,MKMapView的使用

IOS 地圖定位,標註地圖,獲取經緯度: 一、使用MKMapView 定位 二、在地圖上通過經緯度標註(大頭針) 最終效果圖: 開啟應用程式會自動定位並且放大到自己的位置,然後在我的位置上顯示自己的經緯度,通過填寫經緯度可以放置大頭針標註。 一、獲取自身的位置和經緯

iOS之百度地圖獲取地理位置名稱

目前很多的應用都用到了百度地圖這一版本,不過有些方法是我在網上並沒有找到的,但是這並不意味著就沒有相關的文章介紹,那麼這裡我所記錄的就是百度地圖獲取地理位置,以及省份,城市,區域,其他的不多說了,直接進入正題吧:       建立地圖基本圖層          然後

iOS 關於圖片地理位置隱私信息的分析和讀取

img control res 位置信息 log mutable hone tro art 今天突然想到微信朋友圈發照片,涉及個人隱私的地理位置是否外泄。由於iphone拍照的照片都會帶有地理位置等信息。我們先來實現怎麽讀取裏面的安全信息。然後再來分析 #import