在UITextField的光标处插入文本(iOS3.0)
2012-03-13 22:01
246 查看
原文: http://dev.ragfield.com/2009/09/insert-text-at-current-cursor-location.html
iOS SDK的文本输入控件(UITextField、UITextView等)从设计起就不支持第3方的扩展。我需要在iPhone应用中提供一个功能:在UITextField当前选中位置插入文本。在UITextField及其父类方法和协议中都找不到这样一个方法。
一种可行的办法是先获取UITextField的内容,在最后追加所需的文本,然后重新设置UITextField的内容。如果光标刚好在UITextField文本的最后位置(通常的情况),这样做是可以的。但如果光标正处于UITextField文本的中间,则就麻烦了。
在iOS3.0中,有一个解决办法。-(void)paste:(id)sender方法可以从系统剪贴板中粘贴文本到光标当前位置。因此我们需要做的就是临时借用一下系统剪贴板。基本上这要经过以下步骤:
获取系统剪贴板引用
保存系统剪贴板内容,以备最后能恢复它们
将系统剪贴板的内容修改为你希望去插入的文本
发送-(void)paste:(id)sender消息至UITextField或UITextView
恢复系统剪贴板原来的内容
我们为UIResponder新增了一个类别,并在类别中加入方法-(void)insertText:(NSString*)text,这个方法就能用于任何文本编辑视图。
@interface UIResponder(UIResponderInsertTextAdditions)
- (void) insertText: (NSString*) text;
@end
@implementation UIResponder(UIResponderInsertTextAdditions)
- (void) insertText: (NSString*) text {
// 获取系统剪贴板
UIPasteboard* generalPasteboard= [UIPasteboard generalPasteboard];
// 保存系统剪贴板内容,以便最后能恢复它们
NSArray* items =[generalPasteboard.items copy];
//修改系统剪贴板的内容为要插入的文本
generalPasteboard.string = text;
// 告诉responder从系统剪贴板粘贴文本到当前光标位置
[self paste: self];
// 恢复系统剪贴板原有的内容
generalPasteboard.items = items;
// 释放临时数组items
[items release];
}
@end
iOS SDK的文本输入控件(UITextField、UITextView等)从设计起就不支持第3方的扩展。我需要在iPhone应用中提供一个功能:在UITextField当前选中位置插入文本。在UITextField及其父类方法和协议中都找不到这样一个方法。
一种可行的办法是先获取UITextField的内容,在最后追加所需的文本,然后重新设置UITextField的内容。如果光标刚好在UITextField文本的最后位置(通常的情况),这样做是可以的。但如果光标正处于UITextField文本的中间,则就麻烦了。
在iOS3.0中,有一个解决办法。-(void)paste:(id)sender方法可以从系统剪贴板中粘贴文本到光标当前位置。因此我们需要做的就是临时借用一下系统剪贴板。基本上这要经过以下步骤:
获取系统剪贴板引用
保存系统剪贴板内容,以备最后能恢复它们
将系统剪贴板的内容修改为你希望去插入的文本
发送-(void)paste:(id)sender消息至UITextField或UITextView
恢复系统剪贴板原来的内容
我们为UIResponder新增了一个类别,并在类别中加入方法-(void)insertText:(NSString*)text,这个方法就能用于任何文本编辑视图。
@interface UIResponder(UIResponderInsertTextAdditions)
- (void) insertText: (NSString*) text;
@end
@implementation UIResponder(UIResponderInsertTextAdditions)
- (void) insertText: (NSString*) text {
// 获取系统剪贴板
UIPasteboard* generalPasteboard= [UIPasteboard generalPasteboard];
// 保存系统剪贴板内容,以便最后能恢复它们
NSArray* items =[generalPasteboard.items copy];
//修改系统剪贴板的内容为要插入的文本
generalPasteboard.string = text;
// 告诉responder从系统剪贴板粘贴文本到当前光标位置
[self paste: self];
// 恢复系统剪贴板原有的内容
generalPasteboard.items = items;
// 释放临时数组items
[items release];
}
@end
相关文章推荐
- UITextField 文本字段控件 -- IOS (解决键盘遮住View及密文設定的问题)(实例)
- 用js给TextBox在光标位置插入一段文本
- JavaScript 中在光标处插入添加文本标签节点 详细方法
- UITextField 文本字段控件 -- IOS (解决键盘遮住View及密文設定的问题)(实例)
- IOS - 获取UITextField的输入文本
- iOS 设置UITextView显示文本的光标
- iOS UITextField编辑时文本偏移问题?
- iOS开发之UITextField的文本格式扩展
- iOS 改变UITextField中光标颜色
- iOS学习总结之UI框架UI之文本输入控件( UITextField)
- js在一个可编辑的div光标处插入图片或者文本(兼容ie,火狐等浏览器)
- UITextField 文本字段控件-IOS开发
- JQuery扩展:TextArea在光标处插入文本
- iOS 解决文本(uitextfield/uitextView)在中间显示而不在顶部显示 问题
- JS插入今明日期文本到指定光标位置
- UITextField 解决由明文切换到密文后文本被清空和光标位置偏移问题
- IOS UITextField 设置光标位置
- UITextField 文本字段控件 -- IOS (解决键盘遮住View及密文設定的问题)(实例)
- UITextField 文本字段控件 -- IOS (解决键盘遮住View及密文設定的问题)(实例)
- IOS 中设置UITextView 显示文本的光标