2011-08-19 158 views

回答

1

我所做的是將另一個UITextField覆蓋在我想要隱藏光標的頂部。然後在委託方法textFieldShouldBeginEditing中,我將其他textField設置爲第一響應者並返回NO。

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    if (textField.tag==TAG_OF_DUMMY_TEXTFIELD) { 
     [otherField becomeFirstResponder]; 
     return NO; 
    } 
    return YES; 
} 

然後在方法日期選擇器呼叫:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@YOUR_DATE_FORMAT]; 
dummyField.text = [dateFormatter stringFromDate:datePicker.date]; 

在界面生成器otherField(所述一個與所述日期選擇器輸入視圖)是後面dummyField(即隱藏光標的一個)。

6

我無法讓jcm的解決方案工作。我最終做的是將UILabel子類化,以模仿UITextField的交互功能,而不使用我不想要的部分(如光標)。我寫了一篇博客文章在這裏:

http://pietrorea.com/2012/07/how-to-hide-the-cursor-in-a-uitextfield/

基本上,子類的UILabel需要覆蓋isUserInteractionEnabled,inputView,inputViewAccessory和canBecomeFirstResponder。這只是幾行代碼,它更有意義。

+0

偉大的解決方案! – adnako

+0

我最近在我的項目中添加了PRLabel類..但是我不知道我做錯了什麼,它嚴重地破壞了uview與tableview索引...我認爲當選擇器視圖顯示時,tableview被滾動但視覺上不更新...我在第1部分中有一個PRLabel ..我觸摸它,選擇器視圖顯示然後當我觸摸第0節中的單元格時,它正在解釋爲第1部分.. – raw3d

0

我發現這個解決方案是最容易實現的。

確保你在.h文件中定義UITextFieldDelegate:

.... UIViewController <UITextFieldDelegate> 

在您.m文件,將它添加到你叫FO日期選取器的方法:

[yourTextField resignFirstResponder]; 

這將防止從閃爍的文本字段。

39

子類的UITextField和重寫- (CGRect)caretRectForPosition:(UITextPosition *)position方法並返回CGRectZero

- (CGRect)caretRectForPosition:(UITextPosition *)position { 
    return CGRectZero; 
} 
+2

這一個確實做得很好.. –

+0

它不起作用與iOS 4.3。 UITextInput協議僅適用於iOS 5及更高版本。 –

+4

這應該是選定的答案。這是關鍵,並解決了我們想要隱藏的具體部分 - 即插入符號。這是所有這些方案中的最佳解決方案。謝謝。 –

31

我希望它對你有幫助。

Set Cursor UIColor - > Empty。

[[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor clearColor] forKey:@"insertionPointColor"]; 

在斯威夫特:2.3

self.textField.valueForKey("textInputTraits")?.setValue(UIColor.clearColor() , forKey:"insertionPointColor") 
+0

謝謝,它工程...: - ) – byJeevan

+0

非常感謝。 它的工作原理! –

+0

任何人都知道迅捷版本? –

0

巴拉吉的做法確實工作。

我也多次使用過這樣的KVC解決方案。 儘管它似乎是無證的,但它的工作原理。坦率地說,你在這裏不使用任何 私有方法 - 只有鍵值編碼是合法的。

它與[addNewCategoryTextField textInputTraits]截然不同。

P.S.昨天我的新應用出現在AppStore中,沒有任何問題。當我使用KVC更改一些只讀屬性(如navigatonBar)或私有ivars時,這不是第一種情況。

40

我意識到這是一個老問題,但是更新到iOS 7,現在可以通過做隱藏光標以下幾點:

[[self textFieldName] setTintColor:[UIColor clearColor]];

它只會在iOS工作7+然而。

+1

欣賞更新! –

+2

節奏不錯,thansk –

-1

您可以通過關聯對象將BOOL cursorless屬性添加到UITextField的類別中。

@interface UITextField (Cursorless) 

@property (nonatomic, assign) BOOL cursorless; 

@end 

然後使用方法交叉混合來拌和caretRectForPosition:使用cursorlessCGRectZero和它的默認值之間的切換的方法。

這導致通過插入類別的簡單界面。這在以下文件中演示。

只需拖放他們,並得到這個簡單的界面

UITextField類的好處: https://github.com/rexmas/RexDK/blob/master/RexDK/UI/UITextField%2BRXCursorless.h https://github.com/rexmas/RexDK/blob/master/RexDK/UI/UITextField%2BRXCursorless.m

方法混寫: https://github.com/rexmas/RexDK/blob/master/RexDK/Foundation/NSObject%2BRXRuntimeAdditions.h https://github.com/rexmas/RexDK/blob/master/RexDK/Foundation/NSObject%2BRXRuntimeAdditions.m

2

完全傻砍,但如果你設置Interface Builder中的UIView部分中的文本字段的色彩顏色Ÿ檢查相匹配的背景顏色,光標就會出現隱形:

1

不是最好的解決辦法,但你也可以設置色調顏色的不透明度爲0%。

enter image description here