美文网首页
iOS开发中遇到的小问题汇总(持续更新)

iOS开发中遇到的小问题汇总(持续更新)

作者: 水丿果糖 | 来源:发表于2019-08-20 10:46 被阅读0次

    1、使用UIWebView加载网页时,当页面中有视频播放时,调用系统的播放器进行播放,但是点击全屏播放然后返回时,发现状态栏少了一部分,这里需要对退出全屏进行监听,具体代码如下:

    
    //监听UIWindow隐藏
    
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(endFullScreen) name:UIWindowDidBecomeHiddenNotification object:nil];
    
    -(void)endFullScreen{
    
        if ([UIApplication sharedApplication].statusBarHidden) {
    
            [[UIApplication sharedApplication] setStatusBarHidden:false withAnimation:false];
    
        }
    
    }
    
    

    别忘记在后面取消通知

    - (void)dealloc
    {
        [[NSNotificationCenter defaultCenter] removeObserver:self name:UIWindowDidBecomeHiddenNotification object:nil];
    }
    

    2、更新Xcode10.3后运行没有可选择的模拟器,在真机上运行报错,解决办法:
    Kill all simulator processes

    $ sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService
    

    Set the correct Xcode path

    $ sudo xcode-select -s  /Applications/Xcode.app/Contents/Developer
    

    If that doesn’t work, reset all simulators

    $ xcrun simctl erase all
    

    3、在iPhone X以上的设备使用MJRefresh时上拉的状态一直存在,可以在AppDelegate通过添加

    if (@available(iOS 11.0, *)) {
            [[UIScrollView appearance] setContentInsetAdjustmentBehavior:UIApplicationBackgroundFetchIntervalNever];
            [[UITableView appearance] setEstimatedRowHeight:0.f];
            [[UITableView appearance] setEstimatedSectionHeaderHeight:0.f];
            [[UITableView appearance] setEstimatedSectionFooterHeight:0.f];
        }
    

    4、iOS拨打电话 由于最近APP审核提示会停止使用UIWebview API,所以修改了以前使用UIWebview打电话的方式

    /**
      * 拨打电话,弹出提示,拨打完电话回到原来的应用
      * 注意这里是 telprompt://
     */
    NSString *phoneStr = [NSString stringWithFormat:@"telprompt://%@",self.model.mobile];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneStr]];
    

    5、类似微博主页、简书主页等效果。多页面嵌套,既可以上下滑动,也可以左右滑动切换页面。支持HeaderView悬浮、支持下拉刷新、上拉加载更多。https://github.com/pujiaxin33/JXPagingView 先保存一下 有时间学习学习
    6、UIWebView打开相册或者预览时顶部会有遮挡,需要适配iOS11

    if (@available(iOS 11, *)) {
            UIScrollView.appearance.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentAutomatic;
        }
    

    如果是使用UIImagePickerController,可以通过去除毛玻璃效果,_picker.navigationBar.translucent = NO;
    7、UITextField实时监测内容有两种方法:

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        NSString *str = [textField.text stringByReplacingCharactersInRange:range withString:string];
        str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
        NSLog(@"%@", str );
        return YES;
    }
    

    或者

    [textField addTarget:self action:@selector(textFieldEditChanged:) forControlEvents:UIControlEventEditingChanged];
    

    代理方法

    - (void)textFieldEditChanged:(UITextField *)textField
    {
        NSLog(@"textfield.text %@",textField.text);
    }
    

    相关文章

      网友评论

          本文标题:iOS开发中遇到的小问题汇总(持续更新)

          本文链接:https://www.haomeiwen.com/subject/vopusctx.html