天道酬勤,学无止境

ios

How to figure out the current caret position in a UITextField?

问题 我想以编程方式将字符串粘贴到当前插入符号位置的文本字段或文本视图中。 是否有捷径可寻? 我需要知道当前插入符号的位置,但没有办法检索它,对吧? 不想调用私有 API。 有什么合法的方法可以做到吗? 回答1 回答2

2022-05-17 02:51:23    分类:技术分享    iphone   objective-c   ios   uitextfield

iOS 10.3 text to speech works on simulator but not on device

问题 我正在调用法语的文本到语音。 这可以按预期工作: iOS 9.3模拟器、 iOS 9.3设备( iPad 3rd gen )、 iOS 10.3模拟器。 在iOS 10.3设备 ( iPhone 6s ) 上不起作用(静默)。 默认法语语音已安装并根据设备设置工作。 static AVSpeechSynthesizer* synthesizer = NULL; //... +(void)readText:(NSString*)text { if(synthesizer == NULL) synthesizer = [[AVSpeechSynthesizer alloc] init]; AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:text]; utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"fr-FR"]; [synthesizer speakUtterance:utterance]; } 回答1 回答2 在您的 .h 文件中添加AVSpeechSynthesizer* synthesizer = NULL; 你很高兴 - 我已经测试过了..它工作得非常好:) 转到您的 .h 文件并添加

2022-05-17 02:47:29    分类:技术分享    ios   objective-c   iphone   text-to-speech

Firebase: Provided bucket does not match the Storage bucket of the current instance in Swift

问题 我有以下代码: let storageRef = FIRStorage().reference(forURL: "gs://slugbug-....appspot.com") // dots intentional let imageRef = storageRef.child("testImage.jpg") 但是应用程序崩溃了,我收到以下消息: 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“提供的存储桶:slugbug-....appspot.com 与当前实例的存储存储桶不匹配:(null)” 即使我使用 let storageRef = FIRStorage().reference() 桶为零。 为什么? 回答1 我想出了解决方案: 我将代码更改为: let storageRef = FIRStorage().reference(forURL: "gs://slugbug-....appspot.com") 到: let storageRef = FIRStorage.storage().reference(forURL: "gs://slugbug-....appspot.com") ...一个非常微妙但令人讨厌的错误 回答2 您缺少.storage() 。 检查你的线路。 它应该是: let storageRef

2022-05-17 02:47:25    分类:技术分享    ios   swift   firebase   firebase-storage

iOS get audio duration from avplayer

问题 我是 ios 新手,我有一个包含在线音频播放器的应用程序。 我需要获取音频的总持续时间。 我已经尝试了很多,但所有代码都返回NaN或0持续时间。 获得音频总持续时间的最佳方法是什么..? 我的代码 NSString *songUrl = @"http://9xmusiq.com/songs2/tamil/Kaatru%20Veliyidai/Azhagiye%20%5bStarmusiq.cc%5d.mp3" AVURLAsset *asset = [AVURLAsset assetWithURL:[NSURL URLWithString:songUrl]]; AVPlayerItem *playerItem1 = [AVPlayerItem playerItemWithAsset:asset]; AVPlayer *player1 = [AVPlayer playerWithPlayerItem:playerItem1]; AVPlayerLayer *playerLayer1 = [AVPlayerLayer playerLayerWithPlayer:player1]; playerLayer1.videoGravity = AVLayerVideoGravityResizeAspectFill; dispatch_after(dispatch_time

2022-05-17 02:29:17    分类:技术分享    ios   objective-c   avplayer   avplayeritem   avplayerlayer

move navigationBar's left and right barButtonItem's vertically upwards

问题 我试图将导航栏的左右 barButtonItem 垂直向上移动,但没有成功。 我可以设法向上移动标题视图,但对 barButtonItem 使用相同的方法并没有做任何事情。 我想要达到的效果是在 safari 的 Bookmarks 页面上使用的: 我希望在没有任何导航栏子类的情况下实现这一点,这样我就可以保持半透明。 我的方法是直接在 IB 中为 leftBarButtonItem、Title 和 rightBarButtonItem 将 UIView 添加到导航栏。 这适用于标题,我可以添加标题和分段控件。 问题是当我添加左右 barButtonItem 时,我无法将它们垂直移动到分段控件上方。 我正在使用以下代码尝试在 viewDidLoad() 中垂直移动 barButtonItem: self.navigationItem.rightBarButtonItem?.setBackgroundVerticalPositionAdjustment(-15, for: UIBarMetrics.defaultPrompt) self.navigationItem.rightBarButtonItem?.setBackgroundVerticalPositionAdjustment(-15, for: UIBarMetrics.compactPrompt)

2022-05-17 02:13:03    分类:技术分享    ios   swift   uinavigationbar   uinavigationitem

Upgrading Firebase broke my iOS project

问题 我希望我从来没有更新过我的 pod,整个项目充满了错误,一个特定的错误在下面的照片中,我无法修复它,我已经准备好将我的应用程序提交到 App Store 现在看起来一切毁了。 最重要的是,它让我删除了一堆选项。 func uploadData(user: User) { let changeRequest = user.createProfileChangeRequest() changeRequest.displayName = self.nameUser.text! changeRequest.commitChanges(completion: nil) let imageRef = self.userStorage.child("\(user.uid).jpg") let data = UIImageJPEGRepresentation(self.imageView.image!, 0.5) let uploadTask = imageRef.put(data!, metadata: nil, completion: { (metadata, err) in if err != nil { print(err!.localizedDescription) } imageRef.downloadURL(completion: { (url, er) in if er !=

2022-05-17 00:47:20    分类:技术分享    ios   swift   xcode   firebase   cocoapods

Firebase push notification action

问题 我刚刚用 swift 3 构建了我的第一个应用程序。Firebase 运行良好,我正在我的设备上接收通知。 我想要做的是在用户单击通知时设置操作。 我想使用特定的产品 ID(从后端发送)发送到特定的 ProductViewController。 如果用户已登录,则继续使用 ProductViewController,如果未登录,则留在登录屏幕上。 AppDelegate.swift 代码: class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, FIRMessagingDelegate { var window: UIWindow? func applicationReceivedRemoteMessage(_ remoteMessage: FIRMessagingRemoteMessage) { print(remoteMessage.appData) } func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { //

2022-05-17 00:38:09    分类:技术分享    ios   swift   firebase   notifications

How to reduce size of the picture taken by camera in iphone 7

问题 我正在研究 xamarin ios。 我必须在 iphone 应用程序中实现相机功能。 我已经实现了代码。 但问题是,当我尝试使用网络服务上传图片时,由于图片大小,它不会上传。 所以我尝试缩放图片的大小,但在这种情况下,图像看起来很紧张。 我希望该图像应该以相同的大小上传,可能质量最差,但高度和宽度应该是原始的。 这是我实现的代码: Camera.TakePicture(this, (obj) => { var photo = obj.ValueForKey(new NSString("UIImagePickerControllerOriginalImage")) as UIImage; var image = photo.Scale(new CGSize(1280, 720)); Byte[] myByteArray; using (NSData imageData = image.AsJPEG(0.0f)) { myByteArray = new Byte[imageData.Length]; System.Runtime.InteropServices.Marshal.Copy(imageData.Bytes, myByteArray, 0, Convert.ToInt32(imageData.Length)); } }); 回答1 不要执行缩放操作 var image

2022-05-16 23:32:04    分类:技术分享    ios   web-services   xamarin.ios

xctest This app has attempted to access privacy-sensitive data without a usage description

问题 我正在尝试使用单元测试 (xctest) 测试 CoreLocation,但未能通过权限阶段。 我特别收到一条假定的错误消息,见下文(*)。 我正在调整 authorizationStatus 方法,但这对我不起作用。 [MySwizzler swizzleClass:[CLLocationManager class] method:@"authorizationStatus" instanceMethod:NO]; + (CLAuthorizationStatus)override_authorizationStatus { return myAuthorizationStatus; } 一旦我请求授权: [[self locationManager] requestWhenInUseAuthorization]; 我收到回调: -(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { 状态是: kCLAuthorizationStatusRestricted 我的 swizzled 方法永远不会被调用,我在日志中收到这条消息: (*)“这个应用程序试图在没有使用说明的情况下访问隐私敏感数据。应用程序的

2022-05-16 23:17:09    分类:技术分享    ios   objective-c   core-location   xctest

CABasicAnimation on CAShapeLayer not working for path change

问题 我这里有一个进度方法: func progress(incremented : CGFloat){ if incremented <= self.bounds.width{ self.progressLayer.removeFromSuperlayer() let originBezierPathProg = UIBezierPath(roundedRect: CGRect(x:0, y:0, width:0, height:self.bounds.height) , cornerRadius: self.viewCornerRadius) originBezierPathProg.close() let newBezierPathProg = UIBezierPath(roundedRect: CGRect(x:0, y:0, width:incremented, height:self.bounds.height) , cornerRadius: self.viewCornerRadius) bezierPathProg.close() self.progressLayer.path = originBezierPathProg.cgPath self.borderLayer.addSublayer(self.progressLayer) let animation =

2022-05-16 22:42:08    分类:技术分享    ios   swift   animation