项目开发过程中不可避免的会遇到各种坑,本系列博客的主要目的是将其解决方法各个记录下来,以后再遇到就手到擒来了。
1,防止多个按钮同时按下
- [btn setExclusiveTouch:YES];
增加这个语句,防止其他touch事件的分发,当一个按钮响应了touch事件之后,其他按钮就不可点击了。
2,Push到ViewController后的scrollView子View错位
同一个ViewController,用Modal和Push不同的方法显示后,发现某scrollView里面的子View在垂直方向上位置不对。后来查找发现用:
- self.automaticallyAdjustsScrollViewInsets = NO;
可以解决问题,这个property默认值是YES。苹果的本意是,使用Push显示之后,由于navigation controller有个navigation bar,如果你的view(适用于tableview controller)还是从y=0开始的话会有一部分被遮盖。但是SDK用了个一刀切的解决办法,就是把所有的scrollview的inset设置了一下使得其所有子view都向下移动了64点,包括我们项目中用到的scrollview(这个还是水平方向的,非常无辜)。
3,一些不能修改大小的控件
4,UITextField输入过长后字符不自动左移
正常来说,当UITextField不限制字数而用户输入很长的时候,最前边输入的字符会自动左移,光标会一直停留在最后的位置。但是,如果UITextField的高度比字体高度小的话,会出现一直输入但是字符不左移的问题。解决方法是放大UITextField的高度或者调小字体。
5,UITextField不能设置inset的问题
有时候需要设置UITextField的字与边框的问题,但是这个控件没有inset的属性。这时候可以取巧的设置其leftView为制定大小的空白view来达到这样的效果,注意要同时设置leftViewMode为always,这样的话这个view才会一直显示。
6,iOS7之后设置UITableView的cell的选中颜色
苹果原来提供的API你会发现设置了之后毫无效果,需要使用:
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- ....
- UIView *bgColorView = [[UIView alloc] init];
- bgColorView.backgroundColor = [UIColor colorWithRed:(76.0/255.0) green:(161.0/255.0) blue:(255.0/255.0) alpha:1.0]; // perfect color suggested by @mohamadHafez
- bgColorView.layer.masksToBounds = YES;
- cell.selectedBackgroundView = bgColorView;
- ....
- return cell;
- }