tableView reloadData 程序延遲到reloadData結束在操作。
1. 通過layoutIfNeeded方法,強制重繪并等待完成。
[self.tableView reloadData];
[self.tableView layoutIfNeeded];
//刷新完成,執行后續需要執行的代碼
2.reloadData方法會在主線程執行,通過GCD,使后續操作排隊在reloadData后面執行。
[self.tableView reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
//刷新完成,執行后續代碼
});
事件沖突
#import "DKTouchTableView.h"
#import "DKSuspendMapView.h"
@implementation DKTouchTableView
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
CGPoint p = [gestureRecognizer locationInView:self.suspendMap.mapView];
BOOL pointInMapView = [self.suspendMap.mapView pointInside:p withEvent:nil];
self.scrollEnabled = !pointInMapView;
return YES;
}
手勢共存
[singleTapGestureRecognizer requireGestureRecognizerToFail:doubleTapGestureRecognizer];
事件穿透
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
return [super hitTest:point withEvent:event];
}
runtime強制執行
SEL editSelector = self.editButtonItem.action;
IMP editImp = [self methodForSelector:editSelector];
void (*editFunc)(id, SEL) = (void *)editImp;
editFunc(self, editSelector);
多個Button點擊
[UIButton appearance].isExclusiveTouch = YES;
基類
self.navigationController.navigationBar.translucent = NO;
self.automaticallyAdjustsScrollViewInsets = NO;
cell進入編輯模式
-(void)didTransitionToState:(UITableViewCellStateMask)state
通過Clang將mian.m文件編譯為C++
clang -rewrite-objc main.m
還是字符串靠譜
9AB5E23E-026F-47F1-88A3-E18601ED2613.png
使用Xib自定義view的深坑!!!!!
絕對不可以 LBWealthCenterViewController 里面 有一個 LBWealthCenterView的自定義xibView
子視圖不響應父視圖的手勢識別器
/** 讓子視圖不響應父視圖的手勢識別器 */
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
if (touch.view == self) {
return YES;
}
if ([touch.view isDescendantOfView:self]) {
return NO;
}
return YES;
}
忽略編譯器警告
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunguarded-availability"
#pragma clang diagnostic pop
build setting => other waring flags