2011-08-19 127 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