常见问题(三)

1.编写程序时,出现崩溃怎么解决?

  1>  导出崩溃日志...

    (1)  可以在 xcode 的顶部菜单中,找到 Windows-->devices 选项,在弹出的窗口选中左侧我的 iPhone,

    (2)  点击右侧 view devices logs 按钮,查看左侧列表崩溃列表,并选中当前程序,右键 export log,导出.

  2>  找到 dysm

    (1)  XCode编译产生的app文件和dYSM文件路径(可以通过快捷键 command+,打开,进入顶部的 location,点击DerivedData后面的按钮,查找以下路径)

          <current User>/Library/Developer/XCode/DerivedData/<Project name>-<other character>/Build/Products

    (2)  直到找到.app 和. dysm 为止. 

  3>  归同一个文件夹

    将第一步导出的 log 和第二部找到的 app 文件和 dysm 文件放入同一个文件夹

  4>  cd 进入以上文件夹,执行以下命令:

    xcrun atos -o PandaTV-ios.app.dSYM/Contents/Resources/DWARF/PandaTV-ios -arch arm64 -l 0x100090000 0x1008f2de4

    (PS:只改变倒数第一/二个参数即可,倒数第二个是基地址,倒数第一个是偏移地址)

  5> 确定基地址和偏移地址

    崩溃日志中   PandaTV-ios 0x1008f2de4 0x100090000 + 8793572

    只需要解析以 app 名称打头的崩溃语句,其中0x1008f2de4是偏移地址,0x100090000才是基地址

2.webview 打开时,有加载失败的提示.

  1>  Error Domain=WebKitErrorDomain Code=102 "帧框加载已中断" UserInfo={NSErrorFailingURLStringKey=http://itunes.apple.com/cn/app/..

  2>  应该是链接有问题,把 http 换成 https 有可能成功.

  3>  Error Domain=WebKitErrorDomain Code=101 "无法显示 URL" UserInfo={NSErrorFailingURLStringKey=quddddddeals://home, NSLocalizedDescription=无法显示 URL, NSErrorFailingURLKey=quddddddeals://home}

  4>  应该是 urlscheme 没有添加quddddddeals,并最好把quddddddeals放入LSApplicationQueriesSchemes白名单中.

3.iOS 8 UIKeyboardWillShowNotification通知可以收到,但是无法执行

  1>  在 iOS 9及以上系统在收到UIKeyboardWillShowNotification通知时,能迅速执行UI 操作,但是 iOS 8 系统收到该通知时, UI 操作不生效.

  2>  网上查了 iOS 8 相关资料后,都是UIKeyboardWillShowNotification调用两次的处理方法,和我的目的不一样.

  3>  情急之下,我查了查其余类似的通知,添加了UIKeyboardDidShowNotification方法,竟然能成功,只是会晚点儿执行.

  4>  做了最坏的打算,跳跃多层 view, 来监听这个事件...

  5>  绝望时,无意间想到,这是 UI 操作,是不是在子线程无法执行啊???于是就写进了 dispatch_asyn,还是不起作用

  6>  灵机一动,把 dispatch_asyn 改成 dispatch_after 会怎么样???结果竟然真成功了

  7>  看来是时序的问题喽,延迟0.15秒后执行,就完美了.

4.iOS7 让有导航控制器中的控件从导航栏下面开始布局(origin.y == 0的位置)

  1>  让控制器的 edgesForExtendedLayout 属性设置为 UIRectEdgeNone .

  2>  让控制器的导航栏不透明self.navigationController.navigationBar.translucent = NO;

  3>  以上两种方法任选一种,都可以让控件从导航栏顶部开始布局.

5.自定义的slider

  1>  可以继承 UIControl 的 continueTrackingWithTouch:withEvent:方法,来响应滑动事件...

6.UILable 一半是白的一半是绿的

  1>  设置了 attributeText 属性以后有可能出现这个问题

7.在最外层页面 push 新界面失败

  1>   push 操作一般需要两个元素,一个是根导航控制器,一个是要跳转的页面.后者没问题的话,只能是前者出了问题.

  2>   在弹出UIAlertView框时,[UIApplication sharedApplication].keyWindow 会指向该UIAlertView框.进而导致查找最外层页面失败.

  3>   解决方案是使用 appdelegate 中的 window, 永远不会错.[UIApplication sharedApplication].delegate.window.rootViewController

8.判断禁用 bounces 的 UIScrollView 对象左滑还是右滑,上滑还是下滑

  1>  由于 bounces 禁用,没有弹性效果,滑到最左边时, contentOffset.x 最小值为0,因此得考虑其他方法. 开始拖拽+结束拖拽 是个好方法

  2>  若 bounces 没有被禁用,本想只使用 scrollViewDidScroll 一个方法来确定是否是左滑退出的,但是该方法会调用很多次,会影响打点等操作,因此推荐步骤1方法.

 1 - (void)scrollViewDidScroll:(UIScrollView *)scrollView
 2 {
 3     if (scrollView == _scrollView)
 4     {
 5         // 判断是否左滑退出
 6         _isScrollToRight = YES;
 7     }
 8 }
 9 
10 - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
11 {
12     if (scrollView == _scrollView)
13     {
14         // 判断是否左滑退出
15         if (_lastContentOffsetX == 0 &&
16             !_isScrollToRight &&
17             _lastContentOffsetX >= scrollView.contentOffset.x)
18         {
19         }
20     }
21 }
22 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
23 {
24     if (scrollView == _scrollView)
25     {        
26         // 判断是否左滑退出
27         _lastContentOffsetX = scrollView.contentOffset.x;
28         _isScrollToRight = NO;
29     }
30 }

 

 1 - (void)scrollViewDidScroll:(UIScrollView *)scrollView
 2 {
 3     CGFloat lastY = _tableViewLastContentOffsetY;
 4     // 上滑
 5     if (scrollView.contentOffset.y >= lastY)
 6     {
 7         PTVLog(@"LZ465350---上滑....%f",scrollView.contentOffset.y);
 8         
 9         // 排除用力下拉到头,又反弹(上弹)到平衡位置的情况
10         if (scrollView.contentOffset.y <= _tableViewFirstContentOffsetY)
11         {
12         }
13         else
14         {
15             [self moveTagView:YES distance:ABS(scrollView.contentOffset.y - lastY)];
16         }
17 
18     }
19     // 下滑
20     else
21     {
22         PTVLog(@"LZ465350---下滑..%@.....%f",scrollView,scrollView.contentOffset.y);
23         
24         // 排除用力上拉到头,又反弹(下弹)到平衡位置的情况
25         if (scrollView.contentOffset.y + scrollView.height >= scrollView.contentSize.height)
26         {
27         }
28         else
29         {
30             [self moveTagView:NO distance:ABS(scrollView.contentOffset.y - lastY)];
31 
32         }
33  
34     }
35     _tableViewLastContentOffsetY = scrollView.contentOffset.y;
36 }
37 
38 - (void)moveTagView:(BOOL)up distance:(CGFloat)distance
39 {
40     if (up)
41     {
42         if (self.tagView.y > -self.tagView.height)
43         {
44             self.tagView.y -= distance;
45             if (self.tagView.y < -self.tagView.height)
46             {
47                 self.tagView.y = -self.tagView.height;
48             }
49         }
50     }
51     else
52     {
53         if (self.tagView.y < 0)
54         {
55             self.tagView.y += distance;
56             if (self.tagView.y > 0)
57             {
58                 self.tagView.y = 0;
59             }
60         }
61     }
62 }

 

9.点击屏幕 UITableView 以外的区域, 列表变灰

  1>  设置了 UITableView 对象的 allowsSelection 属性可能不生效,而且无法使用 tableview 的 didselect 代理方法.

  2>  还需要把 UITableViewCell 对象的 selectionStyle 属性设置为UITableViewCellSelectionStyleNone,才能生效.

10.查找没有显示的 cell

  1>  UICollectionViewCell *hotCell = [self cellForItemAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]];

    是没有用的.

  2>  可以遍历 UICollectionView 的子视图,其子视图就是其 cell.

  3>  UITableView 就没有这么好说话了,子视图不是其 cell, 要想找到没有显示的 cell, 只能通过先修改数据源,再刷新某一个 item 的数据来实现.

转载于:https://www.cnblogs.com/lz465350/p/6891434.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值