mac os x中選中textfield的部分文字

前提

昨天有個同事問我怎么像系統那樣,點擊文件選擇重命名以后,文件名只選中前半部分,不選中文件格式,我中午弄了好久還是不會,找了一些方法不行,后面問了個大神,用cell實現,代碼是這樣的:

#import "NSTextField+hh.h"

@implementation NSTextField (hh)

-(void)selectTextRange:(NSRange)range
{
NSText *textEditor = [self.window fieldEditor:YES forObject:self];
if (textEditor) {
    
    id cell = [self selectedCell];
    [cell selectWithFrame:self.bounds
                   inView:self
                   editor:textEditor
                 delegate:self
                    start:range.location
                   length:range.length];
  }
}


@end

這樣就可以實現了。效果如下:

效果

調用就是這樣咯:

[self.textfield setStringValue:@"測試中文 ABC123"];
[self.textfield selectTextRange:NSMakeRange(0, 4)];

------------------------分割線------------------------
但是呢,我對我自己之前研究了半天的方法還是不死心,所以我就又和另一個大神討論了下,然后也終于實現了,代碼如下:

- (void)viewDidLoad {
[super viewDidLoad];
NSString* fileName = @"wome.womenshigewefnjian.pdf";


[_shishi setStringValue:fileName];


//    NSMutableString *st = [NSMutableString stringWithFormat:@"%@",fileName];
//把最后一個“.”之前的字符串拿出來
//    _range = [st rangeOfString:@"." options:NSBackwardsSearch];
//    NSString *str = [st substringToIndex:_range.location];
//設置為不可選,不然一開始運行就會全部選中
 [_shishi setSelectable:NO];
}


/**
 按鈕的點擊方法

 @param sender nil
 */
- (IBAction)dianji:(id)sender {

    //設置為可選
    [_shishi setSelectable:YES];

    //這句話的意思是使之成為可編輯狀態
    [_shishi selectText:self];

 /**
  需要選中的字符串,這個方法必須在可編輯狀態下可用,之前就只是設置了使之成為焦點,并不行,后面大神告訴我必須要是可編輯狀態

  @param 0 起始位置
  @param 4 結束位置
  @return void
  */
     [[_shishi currentEditor] setSelectedRange: NSMakeRange(0, 4)];

}

效果如下:

效果

那個range你可以傳其他的,滿足你的需求就好。

總結

關于Mac OS X開發的資料比較少,我就把平時遇到的記錄下來,就當做自己的筆記,以后也就好找了。上面是兩種方法實現。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,264評論 25 708
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 因為要結局swift3.0中引用snapKit的問題,看到一篇介紹Xcode8,swift3變化的文章,覺得很詳細...
    uniapp閱讀 4,502評論 0 12
  • 制作篇: 需準備好的材料:切好的黃瓜絲、切碎的香菜、東北大醬(或豆瓣醬)、雞蛋2~3枚、油、蒜末兒(或蔥末兒)、面...
    咔嚓行動閱讀 896評論 3 7
  • 最近流行一種超牛逼的翅膀,這種翅膀如果安裝在汽車上,汽車想飛就飛,翅膀平時可收縮起來,要用時一按按鈕自動...
    山水伊人兒閱讀 208評論 0 1