注意: 純代碼必定要設置:lable.userInteractionEnabled = YES; 若是控件添加了手勢不起做用,查看一下是否容許用戶交互。
將 Build Settings -> Build Options -> Debug Information Format 中, 置爲了 DWARF, 若是選爲DWARF則不會產生dSYM文件,必須選擇DWARF with dSYM File纔會生成符號表文件。
https://github.com/hackiftekhar/IQKeyboardManager/tree/v3.3.7 這個使用不須要任何設置,拖入框架便可,自動控制鍵盤彈出事件。對任何輸入控件所有有效。 注:該框架表示,若是出問題,好比兼容性問題等,概不負責; 注2:3.3.7 支持ios7。4.0開始只支持iOS8了。
解決:ios
1.因爲全屏佈局下,對viewController上的第一個scrollerView,會有contentInset 自動添加64px,IQKeyboard 對scrollerView作了處理,使得contentInset與scrollerView一致,至關於有添加了64px;可是在鍵盤隱藏時,並無-64處理,全部會致使原本可能不會滾動的scrollerView,變成能夠滾動。 解決1:self.automaticallyAdjustsScrollViewInsets = NO; 解決2:xib或者sb中直接將self.view 繼承UUIScrollerView;可是約束方面本身注意。
方法一:git
if ([UIDevice currentDevice].systemVersion >= 7.0) //也就是iOS7之後的系統 { self.edgesForExtendedLayout = UIRectEdgeNone; self.extendedLayoutIncludesOpaqueBars = YES; self.automaticallyAdjustsScrollViewInsets = NO; <span style="white-space:pre"> </span>navigation.navigationBar.translucent = NO; //取消模糊效果 <span style="font-family: Arial, Helvetica, sans-serif;">}</span>
方法二:原文地址:http://blog.csdn.net/kmyhy/article/details/20444611github
若是你準備將你的老的 iOS 6 app 遷移到 iOS 7 上,那麼你必須注意了。當你的老的 app 在 iOS 7 設備上運行時,全部ViewController 的視圖都總體上移了,由於 iOS 7 把整個屏幕高度(包括狀態欄和導航欄)都做爲了視圖控制器的有效高度。因而你的視圖上移了,並和上層的狀態欄交疊在一塊兒。 你固然能夠在 Xcode 中修改每一個 View,將他們下移20個像素(狀態欄高度)或者64個像素(狀態欄+導航欄高度)。 可是蘋果顯然已經考慮到這個問題,他們在 iOS 7 SDK 中爲 ViewController 提供了一個 edgesForExtendedLayout 新屬性。若是你將這個屬性設置爲UIRectEdgeNone,則 viewController 的全部子視圖都會自動調整,這樣在 iOS 7 下看到的效果和 iOS 6 徹底同樣。 爲了方便,你能夠爲 UIViewController 擴展一個子類,並覆蓋它的 viewDidLoad 方法: @implementation DerivedViewController - (void)viewDidLoad { [superviewDidLoad]; if ([selfrespondsToSelector:@selector(edgesForExtendedLayout)]) self.edgesForExtendedLayout = UIRectEdgeNone; } @end 而後你之後全部的 ViewController 都從這個 DerivedViewController 類繼承。 但不幸的是,咱們的程序仍然有大量 iOS<7 的用戶 ,咱們沒法當即拋棄對 iOS 6 的支持。不管 edgesForExtendedLayout 仍是UIRectEdgeNone,都只能在 iOS7 下有效。對於 iOS 6,我將以上代碼修改成: - (void)viewDidLoad { [superviewDidLoad]; #if__IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 if ([selfrespondsToSelector:@selector(edgesForExtendedLayout)]) self.edgesForExtendedLayout = UIRectEdgeNone; #else float barHeight =0; if (!isIPad()&& ![[UIApplication sharedApplication] isStatusBarHidden]) { barHeight+=([[UIApplication sharedApplication]statusBarFrame]).size.height; } if(self.navigationController &&!self.navigationController.navigationBarHidden) { barHeight+=self.navigationController.navigationBar.frame.size.height; } for (UIView *viewin self.view.subviews) { if ([view isKindOfClass:[UIScrollView class]]) { view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y +barHeight, view.frame.size.width, view.frame.size.height - barHeight); } else { view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y +barHeight, view.frame.size.width, view.frame.size.height); } } #endif } 經過宏 __IPHONE_OS_VERSION_MAX_ALLOWED 判斷 deployment target 是否 >7.0。>7.0則使用新的 edgesForExtendedLayout API,負責使用比較笨的方法逐個下移 subviews,並自動根據狀態欄/導航欄的可視狀態計算要移動的偏移量。 注:若是已升級至Xcode5,將導航控制器的 Top Bar 設置爲一種「Opacque ...」(不透明)類型可解決此問題。