1. 程式人生 > >iOS中改變uiTextField的游標起始位置

iOS中改變uiTextField的游標起始位置

uiTextField作為輸入框,在很多場景都會使用,一般我們都是對齊預設的佈局做一些更改,常用的可能會修改游標的顏色,placeholder的顏色,字型等等,有些修改直接設定uiTextField的屬性就可以,有些則沒有,需要重寫它提供的一些方法才可以,有些則怎麼都辦不到,例如修改游標的寬度,如果哪位知道,請告訴我下,謝謝。

1. 修改游標的位置

    修改游標的位置也就是修改可編輯區域的位置,預設屬性是沒有,但是可以重寫uiTextField,如下:

    MESearchTextField.h

#import <UIKit/UIKit.h>

@interface MESearchTextField : UITextField

@end

   MESearchTextField.m

#import "MESearchTextField.h"

@implementation MESearchTextField

// 控制placeHolder的位置,左右縮20,但是游標位置不變
/*
-(CGRect)placeholderRectForBounds:(CGRect)bounds
{
    CGRect inset = CGRectMake(bounds.origin.x+100, bounds.origin.y, bounds.size.width -10, bounds.size.height);//更好理解些
    return inset;
}
*/

// 修改文字展示區域,一般跟editingRectForBounds一起重寫
- (CGRect)textRectForBounds:(CGRect)bounds
{
    CGRect inset = CGRectMake(bounds.origin.x+10, bounds.origin.y, bounds.size.width-25, bounds.size.height);//更好理解些
    return inset;
}

// 重寫來編輯區域,可以改變游標起始位置,以及游標最右到什麼地方,placeHolder的位置也會改變
-(CGRect)editingRectForBounds:(CGRect)bounds
{
    CGRect inset = CGRectMake(bounds.origin.x+10, bounds.origin.y, bounds.size.width-25, bounds.size.height);//更好理解些
    return inset;
}

@end
   通過上圖可以看到,游標初始位置實際上跟輸入框邊距是x+10起了作用,然後你一直編輯,發現游標不會到最後,會停留在關閉按鈕前面,這個是通過bounds.size.width-25來設定的。。。

二、uiTextField的其他屬性

  // 搜尋框
    _searchFieldText.backgroundColor = UIColorFromHex(0xDEDEDE);
    _searchFieldText.borderStyle = UITextBorderStyleNone;
    _searchFieldText.font = FontLarge;
    _searchFieldText.textColor = ColorTextLight;
    _searchFieldText.placeholder = @" 搜尋";
    _searchFieldText.delegate = self;
    _searchFieldText.layer.cornerRadius = 2;
    _searchFieldText.returnKeyType = UIReturnKeySearch;  //設定按鍵型別
    _searchFieldText.enablesReturnKeyAutomatically = YES; //這裡設定為無文字就灰色不可點
    _searchFieldText.clearButtonMode = UITextFieldViewModeWhileEditing; // 出現刪除按鈕
    // 設定佔位文字的顏色為紅色
    [_searchFieldText setValue:ColorTextLight forKeyPath:@"_placeholderLabel.textColor"];
    // 游標顏色
    _searchFieldText.tintColor = ColorTextLight;

三、重寫的一些方法

– textRectForBounds:  //重寫來重置文字區域
– drawTextInRect:    //改變繪文字屬性.重寫時呼叫super可以按預設圖形屬性繪製,若自己完全重寫繪製函式,就不用呼叫super了.
– placeholderRectForBounds:  //重寫來重置佔位符區域
– drawPlaceholderInRect:  //重寫改變繪製佔位符屬性.重寫時呼叫super可以按預設圖形屬性繪製,若自己完全重寫繪製函式,就不用呼叫super了
– borderRectForBounds:  //重寫來重置邊緣區域
– editingRectForBounds:  //重寫來重置編輯區域
– clearButtonRectForBounds:  //重寫來重置clearButton位置,改變size可能導致button的圖片失真
– leftViewRectForBounds:
– rightViewRectForBounds:

相關推薦

iOS改變uiTextField游標起始位置

uiTextField作為輸入框,在很多場景都會使用,一般我們都是對齊預設的佈局做一些更改,常用的可能會修改游標的顏色,placeholder的顏色,字型等等,有些修改直接設定uiTextField的屬性就可以,有些則沒有,需要重寫它提供的一些方法才可以,有些則怎麼都辦不到

ios input 焦點游標不垂直居中

一般在IOS中input設定了line-height會影響游標的位置,所以最好不要為input設定line-height屬性,只需設定padding即可 http://www.jianshu.com/p/4bf51a436988

ios改變程式的status bar

有兩種: 一、在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中新增 [UIApplication

UITextField 游標位置獲取和設定

今天做一個自定義數字鍵盤的控制元件,有需要獲取到游標位置,所以在網上找到了一段程式碼,主要是獲取游標的位置和設定游標的位置,貼出來。 /** * 游標選擇的範圍 * * @return 獲取游標選擇的範圍 */ - (NSRange)selecte

iOS UITextField設定起始字元開始位置

1.通過設定一個”左檢視” CGRect frame = self.accountTF.frame; frame.size.width = 8;// 距離左側的距離 UIView *leftview = [[UIView alloc] initWithFrame:frame]; self

RunTime運行時在iOS的應用之UITextField占位符placeholder

指向 field 失去 程序 拷貝 ace 底層 文本 ram RunTime運行時機制 runtime是一套比較底層的純C語言API, 屬於1個C語言庫, 包含了很多底層的C語言API。 在我們平時編寫的OC代碼中, 程序運行過程時, 其實最終都是轉成了runtime的C

laravel5make:auth後改變HomeController.php的位置報錯

laravel make auth 情況說明,laravel在make:auth後會自動在controllers目錄下生成HomeController.php文件,本人想把該文件放到controllers\Home目錄下,以便於區分後臺模塊,但是這樣一來登錄就保錯了,除了修改路由web.php中H

iOSUITextField輸入判斷小數點後兩位

draw tab 字符 index har 位數 body keyword tst 在輸入金額的UITextField中,要給予三個規則的判斷 1. 只能輸入數字(可以通過設置鍵盤類型為Decimal Pad) 2. 小數點只能有一個 3. 小數點後最多有兩位數字 (可以通

Linux 改變默認文件打開方式的位置

ans defaults 默認 family oca 個人 fault 打開方式 ati 全局的打開方式, /etc/gnome/defaults.list 個人的打開方式, ~/.local/share/applications/mimeapps.list

bootstrap 關於模態框位置的自定義設定(在不改變原始碼的前提下)

        用過bootstrap的童鞋們在使用模態框的時候一定見過這幾個class :modal fade  modal-dialog modal-body ,至於這些class都有什麼作用,大家去bootstrap官網去查一下就知道了。

將CMD命令提示符的起始位置進行更改 / CMD起始位置發生改變後如何修改回來

  具體步驟如下:   1、首先我們需要先找到命令提示符所在的檔案目錄。可以在開始執行程式中輸入CMD,一般回自動搜尋匹配。          2、右鍵點選命令提示符,在彈出選單中,選擇“開啟檔案位置”;          3、然後我們就可以進入到命令提示符所在的檔案目錄,選中該程式。

iOSUITextField常用設定和方法

//初始化textField並設定位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; // 當輸入框沒有內容時,水印提示 提示內容為"請輸入使用者名稱" textFie

Easyui控制視窗的左上角起始位置

1. Easyui中控制視窗的顯示左上角位置,可以在window的定義時,通過style指定:<div id="picViewWin" class="easyui-window" closed=

UITextField 初始游標初始位置如何居右閃爍 佔位符如何居右顯示

UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 300, 28)]; tf.borderStyle = UITextBorderStyleRoundedRect; [self.view

IOS 設定UITextView 顯示文字的游標

建立一個UITextView 預設是啟動鍵盤 游標位於首位置, 記錄下使用心得 UITextView *_textView=[[UITextView alloc]initWithFrame:self.view.frame]; _textView.text=textStr

ios 使用xib拖拽的scrollview中子控制元件位置偏移

1.問題描述:在xib中拖拽了一個scrollview,並且為之添加了約束,然後從xib中例項化了自定義view新增到scrollview後,發現這個自定義view的子控制元件位置都偏移了。 2.問題

IOS XIB設定了約束後無法在程式碼改變檢視的frame

今天在修改程式碼的時候發現了一些問題,便做了一下優化 先上圖說事: 在這裡的播放列表cell中是兩個UILabel分別顯示的是作品名和作者名。沒修改之前,兩個lab實在XIB中初始化和設定約束的,出來的效果就是無法動態的根據字串長度來增加lab的寬度,或

sqlserver、mysql: 取給定字元在指定串起始位置

前段時間做DB移植,遷移過後,遇見一些sql語法上的問題。其中一個就是有關charindex的。 1. 首先看看sqlserver的charindex。用過的都知道,這是一個返回字串中指定表示式的起始位置的函式,語法如下:     charindex(expr1,expr2

iOS使用blend改變圖片顏色

這個屬性很有意思自己可以看看,點選這裡檢視文章 下面是一個方法改變圖片的顏色的方法 func drawImageColor(image: UIImage,color: UIColor) ->

iOS TextField 獲取游標位置

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