zoukankan      html  css  js  c++  java
  • 常见问题(三)

    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 的数据来实现.

  • 相关阅读:
    自制操作系统Antz(11)——实现shell(下)命令响应
    自制操作系统Antz(10)——实现shell(上)
    利用Android-FingerprintManager类实现指纹识别
    C语言解析WAV音频文件
    自制病毒——控制桌面鼠标以及开关机
    Linux内核源码分析 day01——内存寻址
    后端必备的Linux知识
    Java基础面试题总结
    自制操作系统Antz(9)——实现内核 (下) 实现图形化界面
    自制操作系统Antz(8)——实现内核 (中) 扩展内核
  • 原文地址:https://www.cnblogs.com/lz465350/p/6891434.html
Copyright © 2011-2022 走看看