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

2019-08-20  本文已影响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);
}
上一篇下一篇

猜你喜欢

热点阅读