iOS Programming – 触摸事件处理

iphone/ipad无键盘的设计是为屏幕争取更多的显示空间,大屏幕在观看图片、文字、视频等方面为用户带来了更好的用户体验。而触摸屏幕是iOS设备接受用户输入的主要方式,包括单击、双击、拨动以及多点触摸等,这些操作都会产生触摸事件。

在Cocoa中,代表触摸对象的类是UITouch。当用户触摸屏幕后,就会产生相应的事件,所有相关的UITouch对象都被包装在事件中,被程序交由特定的对象来处理。UITouch对象直接包括触摸的详细信息。

UITouch类中包含5个属性:

             window:触摸产生时所处的窗口。由于窗口可能发生变化,当前所在的窗口不一定是最开始的窗口。
             view:触摸产生时所处的视图。由于视图可能发生变化,当前视图也不一定时最初的视图。
             tapCount:轻击(Tap)操作和鼠标的单击操作类似,tapCount表示短时间内轻击屏幕的次数。因此可以根据tapCount判断单击、双击或更多的轻击。 阅读全文 >>

设置 UILabel 和 UITextField 的 Padding 或 Insets

iOS 的控件,只看到 UIButton 可以设置 Padding/Insets,即按钮上文字或图片与按钮边界的间隙,对与 CSS 来说叫做 Padding,在 iOS 中叫做 Insets,UIButton 设置 Insets 相应的属性如下:

Configuring Edge Insets

      contentEdgeInsets  property
      titleEdgeInsets  property
      imageEdgeInsets  property 

它们接受的属性类型是:UIEdgeInsets,由函数 UIEdgeInsetsMake ( CGFloat top, CGFloat left, CGFloat bottom, CGFloat right );     构造出,分别表示其中的内容/标题/图片离各边的距离。

在 xib 中也有界面来对按钮的这三个 EdgeInsets 属性的设置,分别是按钮的 Edge 和 Inset 属性。

印像中,Swing 的许多组件都可设置 Insets 属性,可对于 iOS 的控件就没那么幸运了,比如我想设置 UILable 或 UITextField 中的文本离边界的间隙,无伦是在 xib 里还是直接代码的方式都无能为力,因为它们根据未开放相应的属性让你去控制。 阅读全文 >>

本站意外休眠了十天后重新恢复正常

本站前段时间有几天时好时坏,经常一访问:http://unmi.cc 就出现:

This account has been suspended.
Either the domain has been overused, or the reseller ran out of resources.

这样的错误提示,我真的还担心是不是触动了大墙而被 Block 了呢,又不怎么像。从大约十天前起就彻底不挺了,今晚问了一下主机提供商的客服,才知道,原来是被爆了--超过月流量了。没理由呀,这个站点还没有这么知名到访问量骤然上升的,彻查啊,于是上图上真相: 阅读全文 >>

设置 NSZombieEnabled 定位 EXC_BAD_ACCESS 错误

我们做 iOS 程序开发时经常用遇到 EXC_BAD_ACCESS 错误导致 Crash,出现这种错误时一般 Xcode 不会给我们太多的信息来定位错误来源,只是在应用 Delegate 上留下像 Thread 1: Program received signal: "EXC_BAD_ACCESS",让问题无从找起。

比如你对已释放的对象发送消息时就会出现,EXC_BAD_ACCESS,再如 release 的对象再 release,release 那些 autorelease 的对象等也会报这样的错。默认设置下 Xcode 不会给你定位具体是哪一行代码,不该去使用已释放的对象,或者 release 用错了。

比如 UIViewController 子类中这样的代码: 阅读全文 >>

让 Xcode 4 自动补全 []、 ""、 ''、 () 的插件

我现在所使用 Xcode 4 Beta 5 尚不支持对  []、 ""、 ''、 () 的自动补全,本插件是由 CocoaChina 版主 “yoyokko” 制作的 Xcode Plugin Plus for Xcode 4 可以帮您实现 Xcode 4 对 []、 ""、 ''、 () 符号的自动补全。

例如输入左中括号,自动补全右中括号,并且光标停在括号中间,在删除左中括号时,右中括号也自动删除。对双引号,单引号,圆括号也是一样的。大括号在 Xcode 中已能自动处理,输入一个左大括号,回车后就会补全右大括号。

本插件的安装方法如下:

1. 安装 SIMBL(SIMBL is the SIMple Bundle Loader),在  http://www.culater.net/software/SIMBL/SIMBL.php 下载 SIMBL-0.9.9.zip (Snow Leopard and Leopard),Lion 系统也可以用这个版本 阅读全文 >>

UIView.clipsToBounds 让子 View 只显示落在父 View 的 Frame 部分

默认情况下,我们向一个 View 中添加一个子 View 时,子 View 的越界部分也会显示出来,当然超过屏幕部分是显示不出来,因为无法在你手上显示内容了。看下面的图:

Unmi clipseToBounds     Unmi clipseToBounds

上图中,橙色的 View 是蓝色 View 的子 View。看左图,由它们的 Frame 设置,橙色的 View 部分超出的蓝色 View 的区域,默认情况下,蓝色 View 超出部分也会显示出来,除非在屏幕之外的部分。 阅读全文 >>

UIView 动画的两种编程方式

iOS  中的 UIView 动画编程其实还是很简单的,像 CSS3 一样,在给定的时间内完成状态连续性的变化呈现。比如背景色,Frame 大小,位移、翻转,特明度等。

以前我使用的编程方式都是用下面那样的三段式处理:

那么被 beginAnimations 和  commitAnimations 框起来的代码就会让你产生动画效果,这种方式像是数据库中的事物编程一样。 阅读全文 >>

UIView你知道多少[转]

曾经有人这么说过,在iphone里你看到的,摸到的,都是UIView,所以UIView在iphone开发里具有非常重要的作用。那么UIView我们到底知道多少呢。请看看下面的问题,
如果这些你都知道,那么本文章的内容就请绕道,如果你还不太清楚,我想看了下面的内容,你就明白了。
1。bounds和frame分别表示什么?
2。ContentMode里UIViewContentModeScaleToFill代表什么?
3。contentStretch 里的指定UIView里缩放区域是如何计算的?
4。UIVIew里的哪些属性变化可以用动画来呈现?
5。UIKit的坐标系和Core Graphics的坐标系的差别是什么?

视图和窗口展示了应用的用户界面,同时负责界面的交互。UIKit和其他系统框架提供了很多视图,你可以就地使用而几乎不需要修改。当你需要展示的内容与标准视图允许的有很大的差别时,你也可以定义自己的视图。 阅读全文 >>

几个 CGRect 函数例子

 CocoaChina 会员“”分享的几个 CGRect 函数例子,希望对您的苹果开发有所帮助

1.CGRectOffset使用从源CGRect偏移的原点来创建矩形

    float offset = 25.0;
    CGRect r1 = CGRectMake(100, 100, 100, 100);
    CGRect r2 = CGRectOffset(r1, offset, offset);

2.CGRectIntersectsRect允许我们确定两个矩形是否相交

    float offset = 25.0;
    CGRect r1 = CGRectMake(100, 100, 100, 100);
    CGRect r2 = CGRectMake(150, 150, 100, 100);
    if (CGRectIntersectsRect(r1, r2)) 阅读全文 >>

WordPress 3.2.1 不能保存 Widget 设置

WordPress 升级到 3.2.1 之后,反正有好长一段时间是不能在 Widgets 中,如左边栏或右边栏中增加 Widget 了。因为现在的工作与 WordPress 本身相去较远些,所以未能修改 Widget 几个月了也没去钻研是怎么回事。现象呢就是:既不能增加新的 Widget,也无法移除原有的 Widget,移动位置也是不行的。界面上是允许操作的,在你操作完后,保存完,页面一刷新又变成原样,就是说服务器无法保存你对 Widget 所做的修改,好像只一点是例如,仅仅可以更改已有 Widget 的标题。

想来 WordPress 3.2.1 肯定不会出现这样的低有错误的,必定是哪理冲突了。Google 后找到一篇类似问题的贴子 Can't edit and save saidebar widgets with WordPress 3.2.1,其中有介绍可能是哪个插件或主题引起的问题,有建议说把所有插件关了又启用,看问题是否依然,或使用默认主题看是否无问题。耐心的去试,总能查到罪魁祸首的。 阅读全文 >>