項目開發過程中不可避免的會遇到各種坑,本系列博客的主要目的是將其解決方法各個記錄下來,以後再遇到就手到擒來了。
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;
- }