Xcode到14.3产生了file not found:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a问题 cocoapods添加如下
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
end
end
end
朗读
Timed out loading Siri voice resource for language zh-CN
今天做语音朗读文本出现了这个问题,之前也做过,是跨端的,之前没问题,源生代码复制过来居然不好使,WTF!?
需要把语音对象,和其所在的类进行强引用,否则可能出现对象提前被释放找不到语音包的问题(这种情况不只是中文,所有语言都会出现这个问题)
改成强引用就OK了
日程
删除日程,设置不了标识符没关系,通过懒加载,保证对象唯一,删除后应该把对象置空,防止再添加时报错,说已经删除
- (void)addEvent {
__weak typeof(self) weakSelf = self;
if ([self.store respondsToSelector:@selector(requestAccessToEntityType:completion:)]) {
// 获取访问权限
[self.store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (error){
//报错啦
}else if (!granted){
// 被用户拒绝,不允许访问日历
}else{
dispatch_async(dispatch_get_main_queue(), ^{
// 用户既然允许事件保存到日历,那就去保存吧
[weakSelf saveDataCalendar:self.store];
});
}
}];
}
}
- (void)saveDataCalendar:(EKEventStore *)eventStore {
NSDate *nowDate = [NSDate date];
self.event.title = @"我是标题" ; // 事件标题
self.event.startDate = [nowDate dateByAddingTimeInterval:0]; // 开始时间
self.event.endDate = [nowDate dateByAddingTimeInterval:0]; // 结束时间
[self.event addAlarm:[EKAlarm alarmWithAbsoluteDate:nowDate]];
[self.event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
[eventStore saveEvent:self.event span:EKSpanThisEvent error:&err];
if (err) {
NSLog(@"添加失败%@",err);
} else {
NSLog(@"添加成功");
}
}
- (void)deleteEveent {
NSError *error;
BOOL success = [self.store removeEvent:self.event span:EKSpanFutureEvents error:&error];
if (success) {
NSLog(@"删除成功!");
self.event = nil;
} else {
NSLog(@"删除失败:%@",error);
}
}
- (EKEvent *)event {
if (!_event) {
_event = [EKEvent eventWithEventStore:_store];
}
return _event;
}
- (EKEventStore *)store {
if (!_store) {
_store = [[EKEventStore alloc] init];
}
return _store;
}
iOS创建空白target注意事项
新target记得处理pod库
在target Membership添加.m文件之后,要记得加(inherited),避免Undefined symbol:_OBJC_CLASS__****错误
OC多target
alert没有取消按钮的情况,点击空白处隐藏
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UIAlertController (TapGesAlertControlle)
- (void)tapGesAlert;
@end
NS_ASSUME_NONNULL_END
#import "UIAlertController+TapGesAlertControlle.h"
@implementation UIAlertController (TapGesAlertControlle)
- (void)tapGesAlert{
NSArray * arrayViews = [UIApplication sharedApplication].keyWindow.subviews;
if (arrayViews.count>0) {
//array会有两个对象,一个是UILayoutContainerView,另外一个是UITransitionView,我们找到最后一个
UIView * backView = arrayViews.lastObject;
//我们可以在这个backView上添加点击事件,当然也可以在其子view上添加,如下:
NSArray * subBackView = [backView subviews];
backView = subBackView[0]; //或者如下
// backView = subBackView[1];
[backView setUserInteractionEnabled:YES];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap)];
[backView addGestureRecognizer:tap];
}
}
- (void)tap
{
[self dismissViewControllerAnimated:YES completion:nil];
}
@end
[self presentViewController:self.alertVC animated:YES completion:^{
[self.alertVC tapGesAlert];
}];