在UITextField的光标处插入文本(iOS3.0)
来源:互联网 发布:java新建package 编辑:程序博客网 时间:2024/05/01 13:51
原文: 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
- 在UITextField的光标处插入文本(iOS3.0)
- 在光标处插入文本
- jQuery实现在光标处插入文本
- Javascript在光标处插入文本
- Javascript在光标处插入文本
- 通过javascript在光标处插入文本
- JS在textarea光标处插入文本
- JS在光标处插入文本
- jQuery在textarea光标处插入文本
- 在文本框的光标处插入指定的文本(兼容IE6和Firefox)
- 静态文本的插入符(光标)
- Jquery或者JavaScript实现在textarea光标处插入文本
- 利用selection对象在textarea光标处插入指定文本
- Ext TextArea 在光标位置插入文本
- 移动光标到相应的文本(比如项目中,插入了图片之后,即在插入的地方显示光标)
- EXT 在textarea的光标处插入
- EXT 在textarea的光标处插入
- EXT 在textarea的光标处插入
- BMP格式详解
- 用3个步骤实现响应式Web设计
- SRM534-div1-1-div2-2-EllysCheckers
- IIS启用HTTP压缩图文教程
- Keil编译时出现 Error:Failed to execute 'BIN40/Armcc'
- 在UITextField的光标处插入文本(iOS3.0)
- heroku assets.compile=true
- c++:strcat潜在的错误不报告
- xcode -all_load、-ObjC
- tomcat几个功能的配置方法
- Iphone——使用SQLite3进行简单的数据库操作
- Linux字符集的修改方法
- 避免Android开发中的ANR
- poj 1065Wooden Sticks (简单的贪心)