![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS开发
文章平均质量分 75
miki西游
这个作者很懒,什么都没留下…
展开
-
中文手写输入法在iOS8.1上的崩溃问题
在中文手写输入法输入时,会导致app崩溃,报-[UIKBBlurredKeyView candidateList]: unrecognized selector sent ,经折腾证实为- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 错误重载所致。原创 2014-11-19 09:39:21 · 4684 阅读 · 1 评论 -
图片展现、缩放、移动及裁减的实现
读取一个图片文件到UIImage对象中,添加到一个UIImageView视图中。UIImageView的size设置成和图片的size一样。保证图片能全部展现。这样UIImageView视图可以通过放大、缩小、移动的方式查看超出屏幕范围的部分图。将图放大或者缩小到合适尺寸,移动需要裁减的图的一部分到屏幕中,再进行裁减。这样保证裁减到的部分是需要进行图像识别的文字,从而提升识别效率。使用pinch手势和pan手势实现图像缩放和图像移动操作,将合适的内容完全拉入屏幕中。采用手指画线框的方式,指定裁减的区域,原创 2013-08-23 16:28:42 · 1132 阅读 · 0 评论 -
普通IT和文艺IT工程师的区别
在一个UITableView的editing设置的方法实现过程中,我想到两种写法,顺便想了一下两种方法的区别。觉得这时一个普通IT工程师和NB工程师的区别一个有趣的印记。您通常时怎么去实现的呢?原创 2013-08-08 10:45:29 · 1078 阅读 · 1 评论 -
iOS动画技术笔记
在IOS中动画效果从layer层开始,向layer中添加CABasicAnimation对象,实际上就是layer中有一个预定义的功能,在视图viewDidAppear后就会执行这个功能点。可能是因为CABasicAnimation稍微复杂点,IOS又封装出来一个类CATransition,它实现的功能有限,一些基本的动画操作如可能是从方便使用的角度考虑,IOS又对UIView做了可做,有了beginAnimations:nil或animateWithDuration:animations:comp原创 2013-07-24 13:48:36 · 1239 阅读 · 0 评论 -
iOS键盘覆盖输入框的处理.doc
在一个多项输入界面上,会有多个UITextfield类型的输入框。为了滚动方面,我们会将他们一一添加到UITableView的cell中,从而组成一个可以上下滑动的数据输入界面。但是字符输入是通过系统自动弹出软键盘来完成的,因此在选择屏幕底端的cell时,会被软键盘的区域所覆盖。同样,正因为输入框是在UITableView的cell中,所以可以将所在的cell滚动到软键盘覆盖的区域之上的位置。使得我们能看到输入框。现在,我们要实现这个操作过程。原创 2013-07-30 13:29:37 · 1572 阅读 · 0 评论 -
ios日历视图实现日期输入
在视图控制器上,触摸textfield,打开的不是虚拟键盘,也不是datepicker,也不要actionsheet,要一个类似html上的日历输入框。这类控件有很多开源的,但目标不是我想要的。参考kal,自己实现了一个这类功能的日历视图。日历视图以自定义视图的方式实现,再add到视图控制器的view上,最后通过日历视图的delegate将自身remove掉。原创 2013-07-05 16:08:19 · 1824 阅读 · 0 评论 -
UIGestureRecognizer在多层视图中的触发问题
在一个superview中,添加了一个subview。tap一下superview,将subview隐藏起来。在视图superview添加一个UITapGestureRecognizer对象,在UITapGestureRecognizer对象的action中实现隐藏subview的逻辑代码。tap一下superview视图,果然就隐藏了subview。但是,我tap一下subview视图,它也隐藏了subview。这是个问题?原创 2013-07-16 15:04:31 · 4663 阅读 · 0 评论 -
UIPanGestureRecognizer使用小结
UIPanGestureRecognizer是UIGestureRecognizer类的一个扩展类,其扩展类有UITapGestureRecognizer,UIPinchGestureRecognizer,UIRotationGestureRecognizer,UISwipeGestureRecognizer,UIPanGestureRecognizer,UILongPressGestureRecognizer。借助这些类,可以实现UIView对象的一些操作如对象放大缩小,移动,旋转,滑动,轻击等。再也不用原创 2013-07-16 11:45:01 · 15095 阅读 · 0 评论 -
NSString在不同字符集下的ASCII码
1、在字符集编码为NSUTF8StringEncoding时可以转换。当然了,本来就是UTF8编码的。2、在字符集编码为GBK时,也可以。因为字符是汉字,并且UTF8的编码范围比GBK大,所以转换没有丢失数据。3、在字符集编码为NSMacOSRomanStringEncoding时,就不行了。在不同的字符集下,获取的每一个字符的字节数已经不一样的,UTF8下汉字三个字节编码,GBK下是两个。这点没有疑问。有疑问的是,为什么获取的每一个字符的ASCII编码都是一样的。原创 2013-07-11 16:52:34 · 3359 阅读 · 0 评论 -
NSDate、NSCalendar和timezone的关系
NSDate是ios中的一个保存时间的对象,其中包含了时区。通过NSLog输出的[NSDate date]是GTM时区的时间,是0时区。而中国大陆采用的是正8区。通过NSDateFormatter将NSDate类的对象输出设置好的格式。NSDateFormatter采用ios操作系统的时区作为默认值。操作系统的时区通过[[NSTimeZone localTimeZone] name]获取到。NSCalendar是ios中的一个保存日历数据的对象,其中也有时区设置,道理和NSDate一样的。NSCalend原创 2013-07-09 16:10:30 · 4765 阅读 · 0 评论 -
UIPinchGestureRecognizer 的scale使用
使用UIPinchGestureRecognizer 手势可以放大或缩小UIImageView视图。放大或缩小的值是根据UIPinchGestureRecognizer 的scale决定。这个值在手势的生命周期内是一个时间点的值。可以假设为开始时这个值是1,缩放率为1,很好理解。在手势begin的,将UIImageView视图的transform记录下来,作为初始值。在手势的changed过程中,每一个changed时候获取的scale值都是和begin时的值的比率。在手势结束时,将scale的值也记录下原创 2013-08-30 16:46:31 · 6041 阅读 · 0 评论 -
中文字符ASCII码和NSString相互转换
在xcode中,文件以utf8格式保存。因此,其中变量对象也是以utf8格式保存。不同语言的utf8编码不一样,英文的utf8编码和ascii码一样。不同语言的每个字符的utf8编码的字节数不一样,字节码也不一样。对于英文字符,查看它的ascii码,很方便,将字符取出来,就是它的ascii码。其实,对于非英文字符,取字符集编码的方式也是这样。这样统称为取ASCII码,在很多文档中也是这样描述的。网上很多这样例子,介绍如何将字符和ASCII码相互转化。但是它们都没有提及如何转换中文等其他非英文的字符,使用原创 2013-09-12 16:18:09 · 14727 阅读 · 1 评论 -
UISearchBar作为inputAccessoryView时的响应链
UISearchBar对象做为一个普通的视图对象添加到视图控制器的self.view中,定义、初始化、设置delegate,然后becomeFirstResponder,最后resignFirstResponder。但是,这里的应用环境是将searchBar作为一个uiresponder子类的对象gridview的inputAccessoryView。这样他的响应链条就复杂了。我开始在searchBarTextDidBeginEditing方法中将searchBar的cancelButton展现出原创 2014-04-25 17:52:44 · 2015 阅读 · 0 评论 -
视图的touch事件的传播控制
在视图控制器类中,self.view中会包括多个多层的自定义视图。我自定义了一个uicollectionview类,名称为gridview,又自定义了一个uicollectionviewcell类,名为gridcell。在gridcell的contentview中增加uitextfield对象。这样,该视图控制器类就会展现出一系列的表格组合,类似于excel。要实现的功能有这些:1、在touch一个格子时就能出现虚拟键盘,从而可以立即编辑它。2、在虚拟键盘出现以后,再touch表格视图的任意点都原创 2014-04-22 14:13:34 · 1350 阅读 · 0 评论 -
ios应用在不同语言及区域的日期显示
在不同的语言环境下,应用展现出来的日期格式都是不一样的。例如英文的语言环境下,展现的日期January 27, 2014。而中文的语言环境下,展现的日期2014年1月27日。这是多语言环境下,任何应用必须面对的问题。我们要显示年月日,可以使用固有的类型NSDateFormatterFullStyle,可以显示符合各种语言环境下符合其语言特征的日期。这是常见的显示格式使用默认的style都能处理好。但是,如果只显示年月呢。我们该如何处理?原创 2014-01-28 09:48:14 · 4437 阅读 · 0 评论 -
UIView的animation和内存释放
应用中有这样一个操作,向主视图中分配一个subview,然后添加subview,再使用动画方式退出subview,最后remove掉。这个过程内存使用量应该时增加,减少这样一个过程,但是在调试时,发现应用内存使用逐步增加,从不释放。这个错误很隐蔽。在视图划出屏幕下方后,界面已经看不到。正因为采用了划出动画操作,所以,将该视图设置为nil时,动画还没结束,导致动画结束时的removeFromSuperview发送给来一个nil对象。所以该子视图还在主视图上,内存还占用。将nil操作放到动画完成后执行原创 2013-12-18 13:12:17 · 4604 阅读 · 3 评论 -
NSDate显示和时区的关系
在网上看到一篇介绍NSDate的博文。在它的“NSDate初始化“章节,说在使用 NSLog(@"当前时间 date = %@",[NSDate date]);时,显示出来的时间不是自己时区的时间,比我们小8个小时。因此判断该问题是时区问题。好,我承认作者判断的很对,但是他给出的解决方法,却令人很意外。这个点对于理解[NSDate date]有很大的误导和迷惑性。因为我们在正8区,而使用NSLog显示[NSDatedate]时,显示的时间是GTM时区的时间。作者将[NSDate date]的结果原创 2013-09-27 11:06:35 · 4051 阅读 · 0 评论 -
deleteRowsAtIndexPaths的NSInternalInconsistencyException异常
在表视图的行删除操作中,用deleteRowsAtIndexPaths方法删除一个indexPath数组时,抛出一个错误NSInternalInconsistencyException。先确定一点,这个错是在对于uitableview的机制使用上不熟悉导致的,一定不是uitableview的自身问题,别动不动就怀疑是ios的bug。原创 2013-09-25 09:56:02 · 2420 阅读 · 0 评论 -
关于SQLite的移动开发必读
SQLite是遵守ACID的关系数据库管理系统,广泛使用在终端设备上。本文根据移动开发的环境要求,将开发中使用到的SQLite常用方法总结归纳,并举例说明。原创 2013-09-24 17:38:15 · 1721 阅读 · 0 评论 -
UITableview上gesture操作cell的技术实现
在一个UITableview的对象上,需要实现每一个cell上的手指滑动操作去对该cell进行删除或者打勾。在编辑状态下,操作为删除该cell;在非编辑状态下,操作为打勾。首先,在自定义的UITableviewCell类中,加入UIPanGestureRecognizer *panGestForDelete,*panGestForCheck;两个对象,分别完成删除或打勾操作。接着,在该原创 2013-09-23 16:03:29 · 1928 阅读 · 0 评论 -
ios两个子视图同一时间进入和离开动画
在一个视图控制器中,加入了两个视图targetSubview和sourceSubview。targetSubview默认是隐藏的,sourceSubview默认是可见的。现在,我有这样一个需求。通过手指下滑,将targetSubview从上向下拉入到屏幕中,同时,sourceSubview将随着从屏幕下方离开。两个视图同步进入和离开是同步操作,用动画来实现。第一种方法,使用UIVi原创 2013-06-21 14:03:32 · 1941 阅读 · 1 评论 -
在简体中文键盘输入时出现ios6.0的bug
在一个viewcontroller的loadview中添加一个UISearchBar对象,在弹出软键盘时,在console中出现下列错误信息。May 7 13:43:44 oumatoMacBook-Pro.local demo[4144] : CGContextSaveGState: invalid context 0x0May 7 13:43:44 oumatoMacBook-原创 2013-05-07 14:51:28 · 1838 阅读 · 0 评论 -
Java和Objective-C中字符编码及DES加密解密
1.概述在基于互联网的应用中,发送端将字符采用某种方式加密后传输;而接受端根据事先约定的密钥进行解密,这样即使传输的字符被截获,也不会轻易被识别。而且,现在很多应用环境都很复杂,服务端是JAVA应用,客户端有JAVA应用、智能手机应用。我们以服务端为JAVA应用,客户端为智能手机IOS应用为例,实现在服务端加密一段字符,传输到客户端解密;在客户端又加密一段字符,传输到服务端解密,这样一个较为复原创 2013-04-23 11:11:45 · 3880 阅读 · 2 评论 -
CLLocationManager的startUpdatingLocation不工作
如何知道iphone的物理位置,这一问题在LBS的应用中很常见。解决起来其实也很简单,就两步。第一步,通过CoreLocation获取经度纬度;第二步,通过google网络服务或者其他架构及获取经纬度以得到物理地址。获取经度纬度的操作过程首先,添加CoreLocation.Frameworks,并将其头文件放在需要引用的类的头文件中,且在头文件中声明一个CLLocationMa原创 2013-03-15 17:31:26 · 3572 阅读 · 0 评论 -
objective-c的属性声明问题“ivar used by '@synthesize' declaration must be an existing iva”
在GNU环境中,测试一段objective-c的代码。很简单一个数据类,定义了一些属性和一个初始化方法,如下所示:#import @interface CtripSign:NSObject@property (nonatomic,copy) NSString * allianceID;@property (nonatomic,copy) NSString * apiKey;原创 2013-03-11 11:28:26 · 2193 阅读 · 0 评论 -
使用NSURLConnection创建http连接
iOS应用程序连接WEB服务器操作过程,使用的是http协议。cocoa中有现成的类如NSURLConnection,用来建立http连接。也有开源的包如ASIHTTPRequest也提供很好的实现http连接的方法。我使用NSURLConnection类做一个测试,实现http的连接操作。http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,H原创 2013-02-02 11:30:09 · 1923 阅读 · 0 评论 -
Objective-C中NSString转NSNumber的方法
在Objective-C中,以数字格式组成的字符串经常需要转换为NSNumber对象后再使用。例如有一个字符串对象@"111.22",需要转为NSNumber对象,最简单的方法就是这样:[NSNumber numberWithFloat:[@"111.22" floatValue]]。这个方法先使用NSString的floatValue方法将字符串转成float,再使用NSNumber的n原创 2013-01-30 10:08:48 · 17776 阅读 · 0 评论 -
理解iOS的应用程序的MVC架构模式
在iOS系统上运行的应用程序遵守MVC的软件架构模式,将自己分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。MVC,维基百科是这样定义的。MVC模式最早由Trygve Reenskaug在1974年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式的目的是实现一种动态的原创 2013-01-29 13:43:56 · 2397 阅读 · 0 评论 -
ASIHTTPRequest的startAsynchronous调用EXC_BAD_ACCESS
一个简单的iOS应用,在主视图控制器类中,实现了ASIHTTPRequest的委托方法- (void)requestFinished:(ASIHTTPRequest *)request和- (void)requestFailed:(ASIHTTPRequest *)request。在这个类的viewDidLoad方法中,调用ASIHTTPRequest的异步请求。请求对象的定义为retai原创 2013-03-14 09:54:35 · 4699 阅读 · 0 评论 -
iOS中NSJSONSerialization解析JSON数据暨google地理信息处理案例
在iOS开发中,涉及到从网络取得json格式的数据处理工作时,我们会想到很多开源的第三方包,如SBJSON。在iOS5开始,也增加了对json格式数据的处理能力,增加的类是NSJSONSerialization。使用NSJSONSerialization,可以分析各种复杂格式json数据。使用的类方法是+ (id)JSONObjectWithData:(NSData *)data opti原创 2013-03-19 16:04:14 · 6044 阅读 · 0 评论 -
UITextField对象的手工创建
1.UITextField的初始化和设置UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 200, 300, 40)];textField.borderStyle = UITextBorderStyleRoundedRect;textField.font = [UIFont syst原创 2013-03-22 14:32:05 · 1050 阅读 · 0 评论 -
加UITableView 到自定义的UIViewController的操作
在自定义的视图控制器类中,通过代码添加uitableview对象和mkmapview对象,实现两个视图对象的展现切换。tableview的delegate和datasource也在这个自定义的视图控制器类中实现。这样就不用依赖于XCODE提供的uitableviewcontroller类。这样更加灵活,有利于开发出更强大的应用。根据展现顺序,使用多线程加载后一个mkmapview对象,企图实现原创 2013-03-21 14:42:19 · 2037 阅读 · 0 评论 -
如何在iOS上展现Web Service数据
在iOS开发中,需要和WEB服务器进行交互,如将一批来自WEB SERVICE的数据展现在表格上。数据交互格式是XML,使用的协议是SOAP。请求的数据中有图片,通常图片都会是一个URL重连接,需要再得到这个URL后下载到终端才展现出来。如果你使用的是浏览器,那么这一切它都做好了。但如果你要更灵活的展现和处理这些数据,这需要开发一个应用。1.实现过程我建立一个简单的基于视图控制器的应用原创 2013-04-03 14:50:41 · 1423 阅读 · 0 评论 -
三种iOS多线程实现方法
(后记,此文写的真烂,完全没有搞清楚单例模式和多线程的区别,也没有理解GCD。不删除了,留着做纪念。)第一种,使用@synchronized(self)static LocationController *sharedInstance;+ (LocationController *)sharedInstance { @synchronized(sel原创 2013-03-29 11:26:54 · 1183 阅读 · 0 评论 -
iOS中URL的解码和转义问题
在iOS开发中,使用NSURLConnection去请求google places api时,如果请求的url中包含中文,则返回的结果为空,URL不能被google识别。NSString *_urlString = @"http://maps.googleapis.com/maps/api/geocode/json?address=南京&sensor=true"; NSURL *_u原创 2013-03-19 17:10:42 · 9987 阅读 · 0 评论 -
关闭iOS虚拟键盘的六种方法
在iOS应用中,输入操作的方式之一是使用虚拟键盘。打开很容易,关闭却有一些讲究。这需要我们去研究一下。我所知道的需要打开虚拟键盘的三类视图对象分别是UITextField,UITextView和UISearchBar。实现这个操作的方法大体是点击虚拟键盘的return键或done键等关闭它,或者是点击键盘之外的区域关闭它。最好的方法是点击虚拟键盘之外的区域来关闭它的方法,采用的是覆盖视图控制器的h原创 2013-01-28 09:19:13 · 6281 阅读 · 0 评论