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

  • 相关阅读:
    UVA 254 Towers of Hanoi
    UVA 701 The Archeologists' Dilemma
    UVA 185 Roman Numerals
    UVA 10994 Simple Addition
    UVA 10570 Meeting with Aliens
    UVA 306 Cipher
    UVA 10160 Servicing Stations
    UVA 317 Hexagon
    UVA 10123 No Tipping
    UVA 696 How Many Knights
  • 原文地址:https://www.cnblogs.com/lz465350/p/6891434.html
Copyright © 2011-2022 走看看