標籤:style io os 使用 ar sp 問題 on line
問題:
在一個父視圖上添加了UITableView以及一個UITextView(UITextView為底部,其餘為UITableView的布局)。當點擊UITextView的時候,響應正常。當結束寫入的時候,需要調用[UITextView resignFirstResponder]來隱藏鍵盤。這就導致,無法收合鍵盤。
原因:
當點擊UITableView的時候,所觸發非UITextView的時候,也就是觸摸的是UITableView。當手指touch的時候,響應鏈便開始從視圖的頂部往下響應。當它到達UITableView的時候,UItableView是繼承UIScrollewView的,所以,這個訊號被UITableView所響應,也就是執行了UITableView的touch方法。所以,UITextView就無法響應。
解決辦法:
給UITableView做擴充,讓其過濾第一次響應:
@implementation UITableView (UITouch)- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [[self nextResponder] touchesBegan:touches withEvent:event]; [super touchesEnded:touches withEvent:event];}- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { [[self nextResponder] touchesMoved:touches withEvent:event]; [super touchesEnded:touches withEvent:event]; }- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { [[self nextResponder] touchesEnded:touches withEvent:event]; [super touchesEnded:touches withEvent:event];}@end
在需要的地方,匯入這個。
在該類中調用,並判斷是不是這個UITableView,如果不是,那就可以收合鍵盤了。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesBegan:touches withEvent:event]; UITableView *teableView = (UITableView *)[touches anyObject]; if (teableView != self.tableView) { [textView resignFirstResponder]; }}
=============================================
還有一種方法,不太建議使用。
也就是在鍵盤彈起的時候,在最上層放一個可點擊的View,即可。
iOS 如何解決無法將鍵盤隱藏