你能改变UITextView中的光标颜色吗?

时间:2009-12-03 19:14:12

标签: iphone uikit

是否可以在UITextView中覆盖光标的颜色和自动更正气泡?这是在内置的Notes应用程序中完成的,但我不知道它是否是通过公共方式完成的。

我在任何文档中都找不到对此的任何引用,所以我担心它是UIKeyboard中的私有API集等。我错过了一些明显的东西吗?

3 个答案:

答案 0 :(得分:7)

虽然这个问题已在这里得到解答,但UITextInputTraits的一些极好的(读取私有)方法(在iOS5和6b中测试:) 我认为读这篇文章的人不是针对AppStore:p

其中一些是:

UITextInputTraits *inputTraits = [_textView textInputTraits];
UIColor *purpleColor = [UIColor purpleColor];
[inputTraits setInsertionPointColor:purpleColor];
[inputTraits setInsertionPointWidth:1]; // Read below note
[inputTraits setSelectionHighlightColor:[purpleColor colorWithAlphaComponent:0.1]];
[inputTraits setSelectionDragDotImage:[UIImage imageNamed:@"CoolHandle"]];
[inputTraits setSelectionBarColor:purple];

insertionPointWidth:显然没有效果。您需要在caretRectForPosition:子类中覆盖UITextInputUITextView协议的方法)。

结果:

Almost lickable


这些也很有趣:

[inputTraits setAcceptsFloatingKeyboard:NO];
[inputTraits setAcceptsSplitKeyboard:NO];

请仔细使用后两个,因为其他文本视图/字段可以接受浮动或拆分键盘,并且当带有自定义输入特征的文本视图成为第一个响应者时,键盘可能无法正确更新。

获取完整的方法列表:

- (void)printMethodsOfClass:(Class)class
{
    unsigned int methodCount = 0;
    NSLog(@"%@", NSStringFromClass(class));
    Method *mlist = class_copyMethodList(class, &methodCount);
    for (int i = 0; i < methodCount; ++i){
        NSLog(@"%@", NSStringFromSelector(method_getName(mlist[i])));
    }
    NSLog(@"------------------------------------------------------------");
    free(mlist);
}

[self printMethodsOfClass:[[textview textInputTraits] class]];

答案 1 :(得分:3)

在iOS 7+上,现在可以通过在文本字段中设置tintColor属性来完成此操作。

答案 2 :(得分:1)

我发现此链接描述了“隐藏的”UIKeyboard魔法。看起来UITextTraits具有CaretColor属性。可悲的是,我不认为搞乱这个会通过Apple的审查过程。除非他们没有注意到?这可能......

http://ericasadun.com/iPhoneDocs112/interface_u_i_keyboard.html