最后效果图:

ViewController.h

//
// ViewController.h
// PinYin4Objc汉字转拼音演示demo
//
// Created by beyond on 14-7-26.
// Copyright (c) 2014年 com.beyond. All rights reserved.
// #import <UIKit/UIKit.h> @interface ViewController : UIViewController
// 输入框
@property (nonatomic,weak) IBOutlet UITextField *textFieldInput;
// 显示用时多少
@property (nonatomic,weak) IBOutlet UILabel *labelTime;
// 显示字数多少
@property (nonatomic,weak) IBOutlet UILabel *labelWordsCount;
// 结果显示框
@property (nonatomic,weak) IBOutlet UITextView *textFieldResult; // 转换button
@property (nonatomic,weak) IBOutlet UIButton *btnOK;
- (IBAction)btnOKClick:(id)sender;
@end

ViewController.m

//
// ViewController.m
// PinYin4Objc汉字转拼音演示demo
//
// Created by beyond on 14-7-26.
// Copyright (c) 2014年 com.beyond. All rights reserved. /*
PinYin4Objc 是一个流行的汉字(支持简体和繁体)转拼音的objc库,有下面特性:
1.效率高,使用数据缓存。第一次初始化以后,拼音数据存入文件缓存和内存缓存。后面转换效率大大提高;
2.支持自己定义格式化。拼音大写和小写等等;
3.拼音数据完整,支持简体中文和繁体,与网络上流行的相关项目比,数据非常全,差点儿没有出现转换错误的问题。 PinYin4Objc is a popular objective-c library supporting convertion between Chinese(both Simplified and Tranditional) characters and most popular Pinyin systems, it's performance is very efficient, data cached at first time. The output format of pinyin could be customized. 性能比較:
与之前的pinyin。POAPinyin和PYMethod等项目比較,PinYin4Objc的速度是非常快的 声调格式化。比如:“刘”字的格式化后为“liu2”或“liu”或“liú” 对特殊拼音ü的的显示格式。 比如“u:”或“v”或“ü” 大写和小写的转换。比如:“liu2”或“LIU2” 设置声调格式:
outputFormat.setToneType(HanyuPinyinToneType);
參数HanyuPinyinToneType有下面常量对象: HanyuPinyinToneType.WITH_TONE_NUMBER 用数字表示声调,比如:liu2 HanyuPinyinToneType.WITHOUT_TONE 无声调表示,比如:liu HanyuPinyinToneType.WITH_TONE_MARK 用声调符号表示。比如:liú 设置特殊拼音ü的显示格式: outputFormat.setVCharType(HanyuPinyinVCharType); 參数HanyuPinyinVCharType有下面常量对象: HanyuPinyinVCharType.WITH_U_AND_COLON 以U和一个冒号表示该拼音。比如:lu: HanyuPinyinVCharType.WITH_V 以V表示该字符,比如:lv HanyuPinyinVCharType.WITH_U_UNICODE 以ü表示 */ #import "ViewController.h"
#import "PinYin4Objc.h"
@interface ViewController () @end @implementation ViewController // 点击button,转换汉字为拼音
- (IBAction)btnOKClick:(id)sender
{
// 1,获取输入的文本
NSString *inputText=_textFieldInput.text;
// robust推断
if ([inputText isEqual:@""]) {
_labelTime.text= @"";
_labelWordsCount.text = @"";
_textFieldResult.text = @"";
// 输入框活的焦点
[_textFieldInput becomeFirstResponder];
return;
}
// 2,实例化拼音格式化对象
HanyuPinyinOutputFormat *outputFormat=[[HanyuPinyinOutputFormat alloc] init];
// 3,设置拼音格式化对象的參数------重点
/*
typedef enum {
ToneTypeWithToneNumber,数字1234表示声调
ToneTypeWithoutTone, 没有声调
ToneTypeWithToneMark 标记声调 这个用不了
}ToneType; typedef enum {
VCharTypeWithUAndColon,
VCharTypeWithV,
VCharTypeWithUUnicode
}VCharType;
*/
// 声调就是没有声调
// [outputFormat setToneType:ToneTypeWithoutTone];
// 声调是数字,跟在后面 海阔天空 <-----> hai3 kuo4 tian1 kong1
[outputFormat setToneType:ToneTypeWithToneNumber];
// 标记声调的这个用不了...
// [outputFormat setToneType:ToneTypeWithToneMark]; // V的表示方法:
[outputFormat setVCharType:VCharTypeWithV];
// V的表示方法:
// [outputFormat setVCharType:VCharTypeWithUUnicode];
// V的表示方法:
// [outputFormat setVCharType:VCharTypeWithUAndColon]; // 结果是大写还是小写,一般小写
[outputFormat setCaseType:CaseTypeLowercase];
// 4,记录转换的開始时间
NSTimeInterval startTime=[[NSDate date] timeIntervalSince1970];
// 5,拼音工具类的类方法转换汉字为拼音,參数1:输入的汉字,參数2:格式化器,參数3:seperator分隔符
NSString *outputPinyin=[PinyinHelper toHanyuPinyinStringWithNSString:inputText withHanyuPinyinOutputFormat:outputFormat withNSString:@" "];
// 6,记录转换的结束时间
NSTimeInterval endTime=[[NSDate date] timeIntervalSince1970];
// 7,计算用时
NSTimeInterval totalTime=endTime-startTime;
// 8,回显结果到界面
_labelTime.text=[NSString stringWithFormat:@"共用时:%fs",totalTime];
_labelWordsCount.text=[NSString stringWithFormat:@"字符数:%i 个",inputText.length];
_textFieldResult.text=outputPinyin;
NSLog(@"%@",outputPinyin);
// 转换为秒
// NSLog(@"seconds:%f",(endTime - startTime)/(float)CLOCKS_PER_SEC); // 调用自己定义方法,退出键盘
[self exitKeyboard]; }
// 自己定义方法,退出键盘
- (void)exitKeyboard
{
// 退出键盘
// 方式1: self.view内部全部的文本框(包含子孙控件...)都退出第一响应者
[self.view endEditing:YES];
return; // 方式2:
// 遍历uiview里面全部的控件 ,resignFirstResponder
for (UIView *obj in self.view.subviews) {
if ([obj isKindOfClass:[UITextField class]]) {
[obj resignFirstResponder];
}
}
// 方式3:
// 在self.view的最开头,铺一个全屏的透明的button,连线,仅仅要在屏幕空白区域点击后,就能够调用上面的方式1,退出键盘
} @end

storyboard截图:

版权声明:本文博主原创文章,博客,未经同意不得转载。

iOS_中国汉字到拼音_pinyin4objc的更多相关文章

  1. 【转】Python 爬虫的工具列表【预】

    这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络 ...

  2. 洗礼灵魂,修炼python(52)--爬虫篇—【转载】爬虫工具列表

    与爬虫相关的常用模块列表. 原文出处:传送门链接 网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络 ...

  3. Python 爬虫的工具列表 附Github代码下载链接

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  4. 转--Python标准库之一句话概括

    作者原文链接 想掌握Python标准库,读它的官方文档很重要.本文并非此文档的复制版,而是对每一个库的一句话概括以及它的主要函数,由此用什么库心里就会有数了. 文本处理 string: 提供了字符集: ...

  5. python 爬虫第三方库

    这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络 ...

  6. Python 爬虫的工具列表大全

    Python 爬虫的工具列表大全 这个列表包含与网页抓取和数据处理的Python库.网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pyc ...

  7. python 进阶(转自http://python.jobbole.com/82633/)

    网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络库(绑定libcurl). urllib3 – P ...

  8. Python 爬虫的工具列表

    这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab - 网络库(基于pycurl). pycurl - 网络 ...

  9. [转] Python 爬虫的工具列表 附Github代码下载链接

    转自http://www.36dsj.com/archives/36417 这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests - ...

随机推荐

  1. Android源代码学习之六——ActivityManager框架解析

    ActivityManager在操作系统中有关键的数据,本文利用操作系统源代码,逐步理清ActivityManager的框架,并从静态类结构图和动态序列图两个角度分别进行剖析,从而帮助开发者加强对系统 ...

  2. 【Java基础】常用基础--从键盘中得到一个字符串

    public static void main(String[] args) { InputStreamReader ipsReader = new InputStreamReader(System. ...

  3. IBatis.net初步使用

    最近加班比较忙,时间也比较琐碎,蛮久没有写东西了.这次就总结一下自己使用IBatis.net的一些总结吧. IBatis简介 IBatis.net是一款开源的Orm框架,应该算是从java的IBati ...

  4. 嵌入在网站上Flash播放机(2)

    然后在一个博客.这里有一个flash嵌入式播放器.这是公司内部使用的flash播放机,支持格更多款式,同时支持swf格视频播放的类型. 以下是页面嵌入代码: <link rel="st ...

  5. Unity3d C# Socket 下载文件 (同步到)

    续篇 Unity3d C# HttpWebRequest 异步下载文件 ,由于project编译为IL2CPP的情况下仍然无效.提示HttpWebrequest 在当前版本号不支持.所以还是寻求其他的 ...

  6. 8、Cocos2dx 3.0三,找一个小游戏开发3.0存储器管理的版本号

    重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27693365 复杂的内存管理 移动设备上的硬件资源十 ...

  7. Activity生命周期解决(有图有真相)

    Activity完整的生命周期: 启动Activity的周期历程: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGVuZ2t2/font/5a6L5L2 ...

  8. php学习之路:WSDL详细解释(两)

    3.定义服务使用的逻辑消息 当服务的操作被调用时.服务被定义为消息交换.在wsdl文档中,这些消息被定义message元素. 这些消息由称之为part元素的部分组成. 一个服务的操作,通过指定逻辑消息 ...

  9. 将node-expat扩展编译至node.exe中

    1.下载node源代码 https://github.com/joyent/node (v:0.10.25) 2.下载node-expat源代码 https://github.com/node-xmp ...

  10. 解决一bug的流程复盘

    听同事说有一个功能不好使了,当时有事,过了一段时间来看看这个bug 解决问题时,看的是老的日志,根据老日志看来看去没有发现问题,觉得很困惑 然后手动执行了一下,发现问题没有重现.与另一个团队的同事沟通 ...