是否可以在UITextView中覆盖光标的颜色和自动更正气泡?这是在内置的Notes应用程序中完成的,但我不知道它是否是通过公共方式完成的。
我在任何文档中都找不到对此的任何引用,所以我担心它是UIKeyboard中的私有API集等。我错过了一些明显的东西吗?
答案 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:
子类中覆盖UITextInput
(UITextView
协议的方法)。
[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