Вопросы с тегами [ios]

1

голосов
1

ответ
787

Просмотры

В App покупки в React-Native Expo?

Я интересно, если есть способ реализации в приложении покупки в Expo для приложения, которое я разрабатываю. Как я исследовал в Интернете, я не нашел однозначного ответа. Может кто-нибудь помочь, пожалуйста?
trill
1

голосов
1

ответ
116

Просмотры

Нить пробег ИОС - Ошибка: Не удается найти модуль - Реагировать Native

Итак, я устанавливаю вверх новый Реагировать Native проект, и я пытаюсь настроить XCode тренажера. Я открыл мой Реагировать Native проект в XCode и в терминале, когда я бегу «пряжи прогонов ИСН» из папки проекта, я получаю сообщение об ошибке «Ошибка: Не удается найти модуль @ столпотворение / выполнения / хелперы / interopRequireDefault 'в функции .Module._resolveFilename». My-MacBook-Pro-2: projectZero AlexS $ пряжи запустить ИОС пряжи запустить v1.13.0 $ реагируют чужеродный запуск КСНА внутренний / модули / CJS / loader.js: 583 броска эээ; ^ Ошибка: Не удается найти модуль @ Babel / выполнения / хелперы / interopRequireDefault 'в Function.Module._resolveFilename (внутренние / модули / CJS / loader.js: 581: 15) в Function.Module._load (внутренний / модули / CJS / loader.js: 507: 25) в Module.require (внутренние / модули / CJS / loader.js: 637: 17) при (требуется внутренний / модули / CJS / helpers.js: 22: 18) на объекте. (/Users/alexs/Desktop/React/Native/projectZero/node_modules/react-native/local-cli/cliEntry.js:11:41) при Module._compile (внутренние / модули / CJS / loader.js: 689: 30 ) при Module._compile (/Users/alexs/Desktop/React/Native/projectZero/node_modules/pirates/lib/index.js:83:24) при Module._extensions..js (внутренний / модули / CJS / loader.js : 700: 10) в качестве Object.newLoader [.js] (/Users/alexs/Desktop/React/Native/projectZero/node_modules/pirates/lib/index.js:88:7) при Module.Load (внутренние / модули /cjs/loader.js:599:32) ошибка Сбой команды с кодом выхода 1. есть ли кто-нибудь представление о том, как решить эту проблему?
T.Jurko
0

голосов
1

ответ
16

Просмотры

Добавлено Autolayout в UITableViewCell, но я вижу неизвестное явление

Я добавил Autolayout к элементам в UITableViewCell, но у меня есть неизвестная ошибка. Все элементы, добавленные с AutoLayout будут выровнены по верхнему левому углу. Если добавить Auto Layout в General Ярлык: После сборки Результат: смещениями Общие этикетки в верхнем левом углу Это верно и для других предметов, а также. Если добавить Auto Layout в общее, Total, Final Ярлык: Там нет коды, связанной с ограничением. UITableViewCell также не имеет коды. В View Controller: FUNC Tableview (_ Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int {1} вернуться Func Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {пусть клеток = tableView.dequeueReusableCell (withIdentifier: "ProcDetailMoreCell", для: indexPath), как! ProcDetailMoreCell возврата клеток} Func Tableview (_ Tableview: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {вернуться CGFloat (175)} Я не знаю, почему это происходит. Пожалуйста, помогите мне понять, почему эти результаты.
Enkha
1

голосов
2

ответ
1.7k

Просмотры

Установите значение ключа в случае NSInteger

Я пытаюсь установить значение в основных данных с помощью SetValue: forKey: но это бросает ошибку: (Использование необъявленной идентификатора:. «NewID»} при попытке сохранить NSInteger Может кто-нибудь предложить правильный синтаксис NSInteger NewID = lastID? +1 [запись SetValue: NewID forKey: @ "localid"]; // ошибка Got подобную ошибку, когда я попытался SetObject вместо SetValue
user1904273
1

голосов
2

ответ
2.8k

Просмотры

как установить текст разделить на 2 строки в быстрой UITextField

У меня есть UITextField с динамическим текстом. Как я могу установить его с помощью редактора, чтобы разделить текст на 2 строки (или больше), если текст не помещается в ширину UITextField? Есть ли способ сделать это не программно? Теперь текст рассматривается как «Это длинная строка» ===> «Это ....», и я хочу, чтобы это было «Это длинная линия»
Elad Benda
1

голосов
3

ответ
134

Просмотры

Когда я добавляю UIContainerView к контроллеру зрения это тип UIView. Как добраться до ViewController для встраиваемого зрения?

Когда я добавляю UIContainerView к контроллеру зрения это тип UIView. Как добраться до UIViewController для встраиваемого зрения? Мне нужно установить некоторые свойства встроенного контроллера представления вида. Спасибо
John Cashew
1

голосов
1

ответ
2k

Просмотры

IOS - объединить два видео в один видео файл со звуком

Я хочу, чтобы объединить 2 видео файлы с одного файла с аудио. Я могу объединить 2 видео файлов, но после слияния ouptut видео файла не имею аудио звука. Даже как старый видеофайл имеет собственный audio.I есть с этим руководством: https://www.raywenderlich.com/13418/how-to-play-record-edit-videos-in-ios Любой suggesiton будет большой. Спасибо, ребята. мой код: - (IBAction) MergeAndSave: (идентификатор) отправитель {если (! firstAsset = ноль && secondAsset = ноль) {[ActivityView startAnimating]; // Создать AVMutableComposition Object.This объект будет содержать наш многократный AVMutableCompositionTrack. AVMutableComposition * mixComposition = [[AVMutableComposition Alloc] инициализации]; // видеодорожка AVMutableCompositionTrack * firstTrack = [mixComposition addMutableTrackWithMediaType: AVMediaTypeVideo preferredTrackID: kCMPersistentTrackID_Invalid]; [FirstTrack insertTimeRange: CMTimeRangeMake (kCMTimeZero, firstAsset.duration) ofTrack: [[firstAsset tracksWithMediaType: AVMediaTypeVideo] objectAtIndex: 0] atTime: kCMTimeZero ошибка: ноль]; AVMutableCompositionTrack * secondTrack = [mixComposition addMutableTrackWithMediaType: AVMediaTypeVideo preferredTrackID: kCMPersistentTrackID_Invalid]; [SecondTrack insertTimeRange: CMTimeRangeMake (kCMTimeZero, secondAsset.duration) ofTrack: [[secondAsset tracksWithMediaType: AVMediaTypeVideo] objectAtIndex: 0] atTime: ошибка firstAsset.duration: ноль]; // аудиодорожка если (audioAsset = ноль!) {AVMutableCompositionTrack * AudioTrack = [mixComposition addMutableTrackWithMediaType: AVMediaTypeAudio preferredTrackID: kCMPersistentTrackID_Invalid]; [AudioTrack insertTimeRange: CMTimeRangeMake (kCMTimeZero, CMTimeAdd (firstAsset.duration, secondAsset. длительность)) ofTrack: [[audioAsset tracksWithMediaType: AVMediaTypeAudio] objectAtIndex: 0] atTime: kCMTimeZero ошибка: ноль]; } AVMutableVideoCompositionInstruction * MainInstruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction]; MainInstruction.timeRange = CMTimeRangeMake (kCMTimeZero, CMTimeAdd (firstAsset.duration, secondAsset.duration)); // КРЕПЛЕНИЕ ОРИЕНТАЦИЯ // AVMutableVideoCompositionLayerInstruction * FirstlayerInstruction = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack: firstTrack]; AVAssetTrack * FirstAssetTrack = [[firstAsset tracksWithMediaType: AVMediaTypeVideo] objectAtIndex: 0]; UIImageOrientation FirstAssetOrientation_ = UIImageOrientationUp; BOOL isFirstAssetPortrait_ = NO; CGAffineTransform firstTransform = FirstAssetTrack. preferredTransform; если (firstTransform.a == 0 && firstTransform.b == 1.0 && firstTransform.c == -1,0 && firstTransform.d == 0) {FirstAssetOrientation_ = UIImageOrientationRight; isFirstAssetPortrait_ = ДА;} если (firstTransform.a == 0 && firstTransform.b == -1,0 && firstTransform.c == 1.0 && firstTransform.d == 0) {FirstAssetOrientation_ = UIImageOrientationLeft; isFirstAssetPortrait_ = ДА;} если (firstTransform.a == 1,0 && firstTransform.b == 0 && firstTransform.c == 0 && firstTransform.d == 1.0) {FirstAssetOrientation_ = UIImageOrientationUp;} если (firstTransform.a == -1.0 && firstTransform.b == 0 && firstTransform.c == 0 && firstTransform.d == -1,0) {FirstAssetOrientation_ = UIImageOrientationDown; } CGFloat FirstAssetScaleToFitRatio = 320,0 / FirstAssetTrack.naturalSize.width; если (isFirstAssetPortrait _) {FirstAssetScaleToFitRatio = 320,0 / FirstAssetTrack.naturalSize.height; CGAffineTransform FirstAssetScaleFactor = CGAffineTransformMakeScale (FirstAssetScaleToFitRatio, FirstAssetScaleToFitRatio); [FirstlayerInstruction SetTransform: CGAffineTransformConcat (FirstAssetTrack.preferredTransform, FirstAssetScaleFactor) atTime: kCMTimeZero]; } Еще {CGAffineTransform FirstAssetScaleFactor = CGAffineTransformMakeScale (FirstAssetScaleToFitRatio, FirstAssetScaleToFitRatio); [FirstlayerInstruction SetTransform: CGAffineTransformConcat (CGAffineTransformConcat (FirstAssetTrack.preferredTransform, FirstAssetScaleFactor), CGAffineTransformMakeTranslation (0, 160)) atTime: kCMTimeZero]; } [FirstlayerInstruction setOpacity: 0,0 atTime: firstAsset.duration]; AVMutableVideoCompositionLayerInstruction * SecondlayerInstruction = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack: secondTrack]; AVAssetTrack * SecondAssetTrack = [[secondAsset tracksWithMediaType: AVMediaTypeVideo] objectAtIndex: 0]; UIImageOrientation SecondAssetOrientation_ = UIImageOrientationUp; BOOL isSecondAssetPortrait_ = NO; CGAffineTransform secondTransform = SecondAssetTrack.preferredTransform; если (secondTransform.a == 0 && secondTransform.b == 1.0 && secondTransform.c == -1,0 && secondTransform.d == 0) {SecondAssetOrientation_ = UIImageOrientationRight; isSecondAssetPortrait_ = ДА;} если (secondTransform.a == 0 && secondTransform.b == -1,0 && secondTransform.c == 1.0 && secondTransform.d == 0) {SecondAssetOrientation_ = UIImageOrientationLeft; isSecondAssetPortrait_ = ДА;} если (secondTransform.a == 1,0 && secondTransform.b == 0 && secondTransform.c == 0 && secondTransform.d == 1.0) {SecondAssetOrientation_ = UIImageOrientationUp;} если (secondTransform.a == -1.0 && secondTransform.b == 0 && secondTransform.c == 0 && secondTransform.d == -1,0) {SecondAssetOrientation_ = UIImageOrientationDown;} CGFloat SecondAssetScaleToFitRatio = 320,0 / SecondAssetTrack.naturalSize.width; если (isSecondAssetPortrait _) {SecondAssetScaleToFitRatio = 320,0 / SecondAssetTrack.naturalSize.height; CGAffineTransform SecondAssetScaleFactor = CGAffineTransformMakeScale (SecondAssetScaleToFitRatio, SecondAssetScaleToFitRatio); [SecondlayerInstruction SetTransform: CGAffineTransformConcat (SecondAssetTrack.preferredTransform, SecondAssetScaleFactor) atTime: firstAsset.duration]; } Еще {; CGAffineTransform SecondAssetScaleFactor = CGAffineTransformMakeScale (SecondAssetScaleToFitRatio, SecondAssetScaleToFitRatio); [SecondlayerInstruction SetTransform: CGAffineTransformConcat (CGAffineTransformConcat (SecondAssetTrack.preferredTransform, SecondAssetScaleFactor), CGAffineTransformMakeTranslation (0, 160)) atTime: firstAsset.duration]; } MainInstruction.layerInstructions = [NSArray arrayWithObjects: FirstlayerInstruction, SecondlayerInstruction, ноль] ;; AVMutableVideoComposition * MainCompositionInst = [AVMutableVideoComposition videoComposition]; MainCompositionInst.instructions = [NSArray arrayWithObject: MainInstruction]; MainCompositionInst.frameDuration = CMTimeMake (1, 30); MainCompositionInst.renderSize = CGSizeMake (320.0, 480.0); NSArray * дорожки = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, ДА); NSString * documentsDirectory = [путь objectAtIndex: 0]; NSString * myPathDocs = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithFormat: @ "mergeVideo-% d.mov", arc4random ()% 1000]]; NSURL * URL = [NSURL fileURLWithPath: myPathDocs]; AVAssetExportSession * экспортера = [[AVAssetExportSession Alloc] initWithAsset: mixComposition presetName: AVAssetExportPresetHighestQuality]; exporter.outputURL = URL; exporter.outputFileType = AVFileTypeQuickTimeMovie; exporter.videoComposition = MainCompositionInst; exporter.shouldOptimizeForNetworkUse = ДА; [Экспортер exportAsynchronouslyWithCompletionHandler: ^ {dispatch_async (dispatch_get_main_queue (), ^ {[самостоятельная exportDidFinish: экспортер];}); }]; }}
Ravi
1

голосов
3

ответ
2.9k

Просмотры

Swift 3: суммарное значение с помощью группы из массива объектов

У меня есть этот код в моем ViewController вар туАггау: Array = Array () для I в 0 ..
Ziggy
1

голосов
2

ответ
63

Просмотры

Многократное Пользовательские UITableViewCell с использованием в Tableview (_cellForRowAt :)

У меня есть некоторые пользовательские UITableViewCell, и будет использовать некоторые из них случайным образом. Но после того, как я их зарегистрировать, он врезался в Tableview (_cellForRowAt :). Вот мой код: в методе viewDidLoad tableView.register (CustomACell.self, forCellReuseIdentifier: "Идентификатор") tableView.register (CustomACell.self, forCellReuseIdentifier: "Идентификатор") функ Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) - > UITableViewCell {пусть модель = DATASOURCE [indexPath.row], если пусть тип = model.type {тип переключателя {случай .A: пусть клетка = tableView.dequeueReusableCell (withIdentifier: MyIdentifier), как! CustomACell cell.assgin (сообщение: модель) возвращение клеток случай .B: пусть клетка = tableView.dequeueReusableCell (withIdentifier: MyIdentifier), как! CustomBCell cell.assgin (сообщение: модель) возвращение клеток}} пусть клетка = tableView.dequeueReusableCell (withIdentifier: MyIdentifier), как! CustomACell cell.assgin (сообщение: модель) возвращение клеток} Если зарегистрировать как он вылетал в случае .A. Если я не буду, некоторые из них будут врезаться в tableView.dequeueReusableCell. Вот один из информации консоли ошибки: Не удалось бросить значение типа «TM.CustomACell» (0x10bb40940) к «TM.CustomBCell» (0x10bb40578).
Dean Lee
1

голосов
1

ответ
1.5k

Просмотры

Swift changing constraints depending on device orientation

When the device is rotated from portrait to landscape, the width constraint of the view is updated but it does not update when the device is rotated from landscape to portrait My code: override func viewDidLoad() { super.viewDidLoad() theView.translatesAutoresizingMaskIntoConstraints = false theView.topAnchor.constraint(equalTo: view.topAnchor, constant: 0).isActive = true theView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = true theView.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0).isActive = true theView.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 0).isActive = true } override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { When the device is first rotated from portrait to landscape 'theView' width get the 50% of the view width if UIDevice.current.orientation.isLandscape { theView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.50).isActive = true Rotating from landscape to portrait does not restore the original width } else { theView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 1.00).isActive = true } } Here is an image that shows what I am trying to do.
Nicoli
1

голосов
2

ответ
8.1k

Просмотры

Xcode: класс не является значением ключа кодирования-совместимый [дубликат]

Этот вопрос уже есть ответ здесь: Что это значит? «„NSUnknownKeyException“, причина: ... этот класс не является значением ключа кодирования совместимый для ключа X» 66 ответов я сейчас работаю сам через этот учебник: https://developer.apple.com/library/content/referencelibrary/ GettingStarted / DevelopiOSAppsSwift / ConnectTheUIToCode.html # // apple_ref / DOC / UID / TP40015214-Ch22-SW1 После создания функции для кнопки (в ~ 2/3 на странице) Я попытался запустить код и получил исключение: 2017- 12-08 11: 24: 31,343183 + 0100 FoodTracker [2159: 154603] *** Нагрузочного приложения из-за неперехваченное исключение 'NSUnknownKeyException', причина: «[SetValue: forUndefinedKey]: этот класс не является значением ключа кодирования совместимым для ключ setDefaultLabelText. *** Первый стек бросить вызов:
Ginso89
1

голосов
2

ответ
454

Просмотры

IOS - Что происходит, я потерял мой APNs ключевой файл?

Я только что создал ключевой файл APNs с сайта разработчика Apple. Он говорил: «Не потерял этот ключ». У меня уже есть резервная копия, но что произойдет, если я его потерял? Он также говорит, я просто нужен один ключ APNs для всех приложений. Могу ли я создать более одного APN, ключ или я должен идти только с одним? Если бы я потерял это я буду не может отправлять уведомления только для этого приложения или ни один из моих приложений? Заранее спасибо.
onurgenes
1

голосов
1

ответ
502

Просмотры

Как сбросить оператор Observable интервал в RXSwift?

Я новичок в RXSwift и я определил Observable последовательность интервалов таймера, который вызывает метод WebService каждую секунду. В этой связи WebService, я получить новое значение времени повтора, который должен заменить с моим текущим временем. Как восстановить эту последовательность с новым значением времени? Это мой код: FUNC mySequence () {/////////////////////////////////////// подписаться на Таймер (время изменения) время вара = попробовать! self.timer.value () self.disposeTimer = timer.subscribe ({значение в момент времени = value.element! печать ( "======================= ====== \ (String (описание: время)) =================================== ==== ")}) /////////////////////////////////////// подписаться на таймер (изменение времени) пусть наблюдаемое = Observable.interval (вРЕМЯ нужно изменить После ответа, планировщик: MainScheduler.instance).
iSibDev
1

голосов
3

ответ
160

Просмотры

Get indexPath from UICollectionViewController to UICollectionViewCell subclass

in my view controller I Am loading a custom CollectionViewCell with subclass. Based on the position of a cell's indexpath I want to format the text labels differently. I.e. first row has only one cell with bigger text, whereas the second has two cell with smaller text. How can I access the indexpath from my UICollectionView in my UICollectionViewCell subclass? I tried a delegate protocol but this always returns nil. Code below and Thanks so much! Markus UICollectionViewController: import UIKit protocol WorkoutDataViewControllerCVDataSource: AnyObject { func workoutType(for workoutDataViewControllerCV: WorkoutDataViewControllerCV) -> WorkoutType func workoutDistance(for workoutDataViewControllerCV: WorkoutDataViewControllerCV) -> Double func workoutDuration(for workoutDataViewControllerCV: WorkoutDataViewControllerCV) -> Double func workoutInstantVelocity(for workoutDataViewControllerCV: WorkoutDataViewControllerCV) -> Double } final class WorkoutDataViewControllerCV: UIViewController { @IBOutlet weak var collectionView: UICollectionView! weak var dataSource: WorkoutDataViewControllerCVDataSource! private lazy var velocityFormatter = VelocityFormatter(dataSource: self, delegate: self) private lazy var averageVelocityFormatter = VelocityFormatter(dataSource: self, delegate: self) override func viewDidLoad() { super.viewDidLoad() self.collectionView.register(MeasurementCollectionViewCell.preferredNib, forCellWithReuseIdentifier: MeasurementCollectionViewCell.preferredReuseIdentifier) } } // MARK: - Managing UICollectionView extension WorkoutDataViewControllerCV: UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return 4 } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Measurement Cell", for: indexPath) return cell } } extension WorkoutDataViewControllerCV: UICollectionViewDelegateFlowLayout { func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let availableWidth = self.view.frame.width switch indexPath.row { case 0: return CGSize(width: availableWidth, height: 150) case 1: return CGSize(width: availableWidth/2.1, height: 150) case 2: return CGSize(width: availableWidth/2.1, height: 150) case 3: return CGSize(width: availableWidth, height: 150) default: return CGSize(width: availableWidth/2.1, height: 150) } } } // MARK: - Managing VelocityFormatter extension WorkoutDataViewControllerCV: VelocityFormatterDataSource { func duration(for velocityFormatter: VelocityFormatter) -> Double { return dataSource.workoutDuration(for: self) } func distance(for velocityFormatter: VelocityFormatter) -> Double { return dataSource.workoutDistance(for: self) } func instantVelocity(for velocityFormatter: VelocityFormatter) -> Double { return dataSource.workoutInstantVelocity(for: self) } } UICollectionViewCell.swift import UIKit final class MeasurementCollectionViewCell: UICollectionViewCell { @IBOutlet private var measurementPropertyLabel: UILabel! @IBOutlet private var measurementValueLabel: UILabel! @IBOutlet private var measurementUnitLabel: UILabel! static let preferredReuseIdentifier = "Measurement Cell" static let preferredNib = UINib(nibName: "MeasurementCollectionViewCell", bundle: nil) override func awakeFromNib() { super.awakeFromNib() updateMeasurement(property: "Speed", value: "100", unit: "km/h") //measurementValueLabel.font = measurementValueLabel.font.monospacedDigitFont } func updateMeasurement(property: String, value: String, unit: String?) { measurementPropertyLabel.text = property measurementValueLabel.text = value measurementUnitLabel.text = unit } }
Starkus
1

голосов
1

ответ
38

Просмотры

Setting title when requesting permissions?

Я прошу разрешение для музыкальной библиотеки, но этот вопрос в равной степени подходит для любых разрешений, которые могут быть запрошены. Я поставил ключ и значение в PLIST проекта: Конфиденциальность - Медиатека Использование Описание: Доступ к библиотеке мультимедиа может потребоваться включить музыку. Это может быть настроено в настройках. Я затем добавил код для отображения нативного предупреждения: MPMediaLibrary.requestAuthorization {состояния} в этом все работает, как ожидалось. Проблема в том, что я хочу, чтобы задать заголовок разрешений оповещения для пользовательского заголовка. Я хотел бы пользовательский заголовок вместо: AppName хотел бы получить доступ к Apple Music, вашу музыку и видео активности, и ваши средства массовой информации библиотеки я вижу много причин, почему это не будет настраиваемым, Apple не хочет человек лжет, или быть в состоянии ложь, о разрешениях запрашиваемых быть основным. Было бы здорово, чтобы узнать, возможно ли это, и тогда любое указание о том, как это сделать, если так. В противном случае знание того, что это не возможно, является столь же ценным.
simon_smiley
1

голосов
1

ответ
62

Просмотры

Xcode 10,1 Не можете найти Построить Tab Phases

Я в настоящее время использую Xcode 10.1. Кто-нибудь знает, как получить доступ к вкладке фаз сборки? Все, что я могу увидеть информацию и построить настройки. Мне нужно найти способ связать RCTFBLogin.xcodeproj. Ниже приведен скриншот:
Eunicorn
1

голосов
1

ответ
80

Просмотры

Обнаружение до iPhone выключается?

это позволило обнаружить до того, как iPhone выключается для вызова действия, как сохранение данных в постоянном хранилище и т.д. для Swift я попробовал функцию appWillEnterBackground и appWillTerminate, но didn't работу, когда я выключить телефон в приложении
SwiftNewling
1

голосов
1

ответ
42

Просмотры

Insert instead of update in firebase

Я пытаюсь вставить новые значения в Firebase в реальном времени базы данных. Но каждый раз, когда я «зарегистрировать» новый пользователь, мои данные базы данных становится заменен новым. Я совершенно запутался, как я могу это сделать по-другому. Это мой код .. // Создание нового пользователя с txtfield электронной почты и пароль Auth.auth () CreateUser. (WithEmail: адрес электронной почты, пароль: пароль) {authResult, ошибка ошибки // Printing если если ошибка = ноль {! печать (ошибка в любом) возвращении} // Получение справочной базы данных позволяет иому = Database.database () ссылке () // значения для вставки в базу данных позволяют значение = [ «Имя пользователя»:. self.username, «Электронную почта»: самостоятельно. электронная почта, "Name1": self.name1, "Name2": self.name2, "name3": self.name3, "Name4": self.name4, "Name5": self.name5,
Putte
1

голосов
2

ответ
87

Просмотры

RevenueCat - Почему я получаю: Ошибка домена = SKErrorDomain Code = 2 «Не удается подключиться к ITunes магазин»

У меня есть два авто-обновление подписки, ежемесячные и ежегодные (IOS). Я могу сделать покупку, когда я использую новый свежий пользователь песочницы. Несмотря на то, что я должен ввести свой пароль в три раза. Вот поток: Нажмите на подписку Введите пароль Promted ввести пароль еще раз получить «не может подключиться к ITunes Store,» ошибка попробуйте еще раз и ввести пароль покупки успешно. Двигаясь дальше, так как только это удастся, я теперь подписался и мой UI обновляется через слушателя в AppDelegate, который отправляет уведомление, что я подписаться. Но когда я пытаюсь переключить подписку, из ежемесячно в год, или наоборот, он всегда дает мне «Не удается подключиться к ITunes магазин» ошибка. Нет обновлений пользовательского интерфейса. Вот поток: Нажмите на другой подписке ввести пароль ITunes Получить «подтвердить покупку» диалог, в котором говорится, I» м изменение моей подписки нажмите Продолжить Получить «Вы все установить» предупреждение успеха. Отклонить оповещение Получайте «Не удается подключиться к ITunes Store,» ошибка Мой слушатель не был вызван, интерфейс не был обновлен, и т.д. Но если я смещать ошибку и нажмите подписку снова, я получаю уведомление, что говорит, я уже подписался в этом плане, даже если ошибка была брошена, и мой слушатель не забрать изменения. Я использую firebase. Я последовал быстрый старт и Firebase конкретных инструкций в RevenueCat документации. Все мои журналы отладки, кажется, хорошо, нет, не 200 статусов, не недопустимый продукт Идентификаторы. Вот некоторые фрагменты кода: AppDelegate: Purchases.debugLogsEnabled = истина Purchases.configure (withAPIKey: Constants.revenueCatKey) Purchases.shared.delegate = само FirebaseApp.configure () authHandle = Auth.auth ().
sharkonaut
0

голосов
1

ответ
12

Просмотры

Есть ли способ, чтобы использовать неразрывные пробелы в виде UILabel на экране запуска?

Я хотел бы, чтобы убедиться, что имена в авторском строке многострочных на экране запуска не получают расщепляются разрывы строк на разных устройствах. Внутри контроллера обзора с выходом UILabel TextLabel последовательность побег «\ и {} 00A0» работает программно: textLabel.text = «Много текста перед ... Firstname \ и {} 00A0 Lastname ... и после.» Он отображает строку с управляющей последовательности заменяется пробелом и слова по обе стороны всегда появляются на одной и той же линии. Тем не менее, я не могу заставить его работать, поставив его в качестве значения в UILabel в Interface Builder - либо в LaunchScreen или любой другой View Controller. Он просто отображает строку с кодами осталось как и набрана. Я перепробовал все различные комбинации \ и, \ U, \\ и \\ U, \ х + и т.д. предлагается в нескольких SO вопросов, но безрезультатно. Я думаю, что вмешательство на дисплее экрана запуска программно невозможно. Разве я что-то пропустил?
Nick
1

голосов
2

ответ
4.1k

Просмотры

отправка смс программно в Iphone

Как вы можете отправить SMS программно определенным числом, выбранным в списке контактов в iPhone?
user564963
0

голосов
1

ответ
25

Просмотры

Как избежать оповещения вызовов в IOS

Я разрабатываю приложение IOS с быстрым поясню, как мое приложение работает приложение будет подключаться к ПК клиенту с TCP / IP и получите номер телефона, чтобы набрать Когда я пытаюсь отправить номер в приложение, чтобы сделать вызов с телефоном Показывая оповещения с 2 кнопками «Вызов» и «Отмена». Есть ли способ избежать этого предупреждения? Примечание: Пользователь знает, что мое приложение будет делать вызов и я буду иметь соглашение с пользователем
Mahmoud Wizzo
3

голосов
2

ответ
124

Просмотры

UISearchController wrong animation on swipe back then disappearing

Для того, чтобы сделать эту короткие, у меня есть главный контроллер представления, который имеет навигационную панель, скрытую от навигационного контроллера этого VC, я толкать другой контроллер представления, который имеет панель навигации видимую. Затем добавить searchController к navigationItem добавить SearchBar, когда я прокручиваю вниз. Все работает отлично, пока не красть назад, чтобы вытолкнуть VC. Панель навигации будет анимировать покинуть экран с ВК, но SearchBar будет живой, как будто это происходит в месте. Что еще хуже, если я отменю салфетки поп, весь SearchBar исчезает и черный вид появляется вместо (я думаю, что фон searchController OW любого вида фона). Я попробовал все, это несколько строк кода, пока я тянущие мои волосы, чтобы решить эту проблему. Я знаю, что могу просто отключить салфетки, чтобы выскочить, но я не» т хотим, чтобы (+ даже при нажатии назад SearchBar одушевляет в том же странным образом), и я не хочу, чтобы добавить SearchBar любым другим способом. В прилагаемом видео я просто ударяя палец, чтобы показать анимацию. - (недействительными) viewDidLoad {[супер viewDidLoad]; self.definesPresentationContext = ДА; [Не self.navigationController setNavigationBarHidden: NO]; если (@available (IOS 11.0, *)) {self.searchController = [[UISearchController Alloc] initWithSearchResultsController: ноль]; _searchController.delegate = самостоятельно; _searchController.searchResultsUpdater = самостоятельно; _searchController.searchBar.placeholder = @ "Поиск"; self.navigationItem.searchController = _searchController; self.navigationItem.hidesSearchBarWhenScrolling = ДА; }} м просто ударяя палец, чтобы показать анимацию. - (недействительными) viewDidLoad {[супер viewDidLoad]; self.definesPresentationContext = ДА; [Не self.navigationController setNavigationBarHidden: NO]; если (@available (IOS 11.0, *)) {self.searchController = [[UISearchController Alloc] initWithSearchResultsController: ноль]; _searchController.delegate = самостоятельно; _searchController.searchResultsUpdater = самостоятельно; _searchController.searchBar.placeholder = @ "Поиск"; self.navigationItem.searchController = _searchController; self.navigationItem.hidesSearchBarWhenScrolling = ДА; }} м просто ударяя палец, чтобы показать анимацию. - (недействительными) viewDidLoad {[супер viewDidLoad]; self.definesPresentationContext = ДА; [Не self.navigationController setNavigationBarHidden: NO]; если (@available (IOS 11.0, *)) {self.searchController = [[UISearchController Alloc] initWithSearchResultsController: ноль]; _searchController.delegate = самостоятельно; _searchController.searchResultsUpdater = самостоятельно; _searchController.searchBar.placeholder = @ "Поиск"; self.navigationItem.searchController = _searchController; self.navigationItem.hidesSearchBarWhenScrolling = ДА; }} если (@available (IOS 11.0, *)) {self.searchController = [[UISearchController Alloc] initWithSearchResultsController: ноль]; _searchController.delegate = самостоятельно; _searchController.searchResultsUpdater = самостоятельно; _searchController.searchBar.placeholder = @ "Поиск"; self.navigationItem.searchController = _searchController; self.navigationItem.hidesSearchBarWhenScrolling = ДА; }} если (@available (IOS 11.0, *)) {self.searchController = [[UISearchController Alloc] initWithSearchResultsController: ноль]; _searchController.delegate = самостоятельно; _searchController.searchResultsUpdater = самостоятельно; _searchController.searchBar.placeholder = @ "Поиск"; self.navigationItem.searchController = _searchController; self.navigationItem.hidesSearchBarWhenScrolling = ДА; }}
Eph Bee
1

голосов
1

ответ
32

Просмотры

Преобразование в Swift 5 доступен [на удержание]

Я получаю это предупреждение в Xcode 10.2. Переход к быстрым 5 доступен Когда я нажимаю эту ошибку он открывает окно Когда мы нажимаем ДАЛЕЕ, что будет ...
iOS
0

голосов
0

ответ
8

Просмотры

Как обнаружить плоскую поверхность с помощью Аркыт

Я создаю приложение для измерения высоты объекта с помощью Аркыто. Для небольших предметов, таких как бутылки, ручка и контролировать это показывает почти точный результат. но когда утра попробовать для некоторых крупных объектов, то есть высота мужчин, высота двери его показывает другой результат для каждого измерения. Я думаю, что его из-за обнаружения плоскости поверхности. есть ли лучшее решение для обнаружения самолета? или любой другой вариант для нахождения высоты? Кроме того, есть ли информация о рамках видения с Аркыты?
Sachu
4

голосов
2

ответ
83

Просмотры

кнопку (FAB) на React Родной обыкновение оставаться на вершине, когда модальный, IOS, Actionsheet, компонент выбора оказывается плавающей

Используя абсолютную кнопку, расположенную в высшей компоненте порядка не будет служить целями в обычных случаях применения, но когда модальный / actionsheet / выбор и т.д. оказывается кнопка больше не остается на вершине.
Hariks
1

голосов
3

ответ
1.1k

Просмотры

@ char as a key in NSDictionary

Я попытался с помощью @ символ в качестве ключа в NSDictionary и мое приложение просто выходит из строя. Я искал «недействительные» ключевые имена, не могу найти @ «@» в любом месте. Если я буду использовать что-то другое, чем @ «@» все это прекрасно работает. У меня есть список comanies, я получаю первую букву каждой компании, а затем я создаю NSMutableDictionary запись, содержащую первую букву в качестве ключа и в NSMutableArray в качестве значения. NSMutableDictionary indexDictionary = [[NSMutableDictionary Alloc] инициализации]; // здесь мы имеем петлю на COMPANYNAME {NSString * fristLetter = [[COMPANYNAME substringToIndex: 1] uppercaseString]; NSMutableArray * arrayOfIndexedCompanies = [indexDictionary valueForKey: firstLetter]; если (arrayOfIndexedCompanies) {[arrayOfIndexedCompanies AddObject: COMPANYNAME]} еще {NSMutableArray * newArray = [NSMutableArray массива]; [IndexDictionary SetObject: newArray forKey: firstLetter]; [NewArray AddObject: COMPANYNAME]; }} Я активировал точку останова на разрыв броска и останавливается на [indexDictionary valueForKey: firstLetter] ... только тогда, когда firstLetter это @ «@». Я имел бы говоря: если ([firstLetter isEqualToString: @ "@"]) {firstLetter = @ "A"; } И это хорошо работает, он помещает @ стартовые компании в разделе А правильно. Если я позволить firstLetter неизменным (оставляя его как @ «@») приложение будет врезаться. Кроме того, это не мой код, я просто пытаюсь исправить это, я не совсем знаком с ObjC и Фондом поэтому, пожалуйста, быть нежными. [NewArray AddObject: COMPANYNAME]; }} Я активировал точку останова на разрыв броска и останавливается на [indexDictionary valueForKey: firstLetter] ... только тогда, когда firstLetter это @ «@». Я имел бы говоря: если ([firstLetter isEqualToString: @ "@"]) {firstLetter = @ "A"; } И это хорошо работает, он помещает @ стартовые компании в разделе А правильно. Если я позволить firstLetter неизменным (оставляя его как @ «@») приложение будет врезаться. Кроме того, это не мой код, я просто пытаюсь исправить это, я не совсем знаком с ObjC и Фондом поэтому, пожалуйста, быть нежными. [NewArray AddObject: COMPANYNAME]; }} Я активировал точку останова на разрыв броска и останавливается на [indexDictionary valueForKey: firstLetter] ... только тогда, когда firstLetter это @ «@». Я имел бы говоря: если ([firstLetter isEqualToString: @ "@"]) {firstLetter = @ "A"; } И это хорошо работает, он помещает @ стартовые компании в разделе А правильно. Если я позволить firstLetter неизменным (оставляя его как @ «@») приложение будет врезаться. Кроме того, это не мой код, я просто пытаюсь исправить это, я не совсем знаком с ObjC и Фондом поэтому, пожалуйста, быть нежными. @ "@"]) {FirstLetter = @ "А"; } И это хорошо работает, он помещает @ стартовые компании в разделе А правильно. Если я позволить firstLetter неизменным (оставляя его как @ «@») приложение будет врезаться. Кроме того, это не мой код, я просто пытаюсь исправить это, я не совсем знаком с ObjC и Фондом поэтому, пожалуйста, быть нежными. @ "@"]) {FirstLetter = @ "А"; } И это хорошо работает, он помещает @ стартовые компании в разделе А правильно. Если я позволить firstLetter неизменным (оставляя его как @ «@») приложение будет врезаться. Кроме того, это не мой код, я просто пытаюсь исправить это, я не совсем знаком с ObjC и Фондом поэтому, пожалуйста, быть нежными.
andrei
1

голосов
3

ответ
1.7k

Просмотры

UIScrollView Уведомление?

Есть ли уведомление посыл когда UIScrollView изменяет это состояние прокрутки? Я хотел бы послушать тех, кто уведомление, а не использовать методы делегата? Любая помощь очень ценится ....
Ab'initio
4

голосов
0

ответ
129

Просмотры

xcodebuild not doing incremental builds

Недавно я проверил свежую версию приложения IOS от мерзавца и построен из командной строки с помощью xcodebuild. Затем я построил второй раз, используя ту же самую команду, а не делая никаких изменений в файлы в репозитории вообще (даже не открывая их). Я ожидал, что второй билд не принимать вообще никакого времени, но на самом деле заняло больше времени, чем первый: пользователя $ время xcodebuild -sdk «iphonesimulator» -схема -конфигурация «DemoApp» -target «Debug» сборки «DemoApp»> / DEV / нуль-реального 5m45.849s пользователь 0m15.270s SYS 0m5.640s пользователя $ время xcodebuild -sdk 'iphonesimulator' -схема 'DemoApp' -конфигурация -target сборки 'DemoApp' 'Debug'> / DEV / нуль реальных 6m8.858s пользователя 0m12. 904s SYS 0m4.198s Если я строит в Xcode без каких-либо изменений, он строит и работает в считанные секунды. Вот вещи, которые я пытался получить инкрементальные сборки в командной строке: Я пытался добавить -derivedDataPath ~ / Library / Developer / Xcode / DerivedData, но получил те же результаты. Я добавил -incremental флаг другим Swift аргументов. Я выключил все скрипты и обеспечил файлы не изменились между строит ли не xcodebuild поддержки дополнительные строит? Есть ли способ, чтобы выяснить, почему это происходит? Я использую последнюю версию Xcode и новую систему сборки Xcode 10. Большая часть кода в быстры, если это делает никакой разницы. Edit: изменение назад к старой системе сборки строит постепенно через xcodebuild менее чем за 30 секунд. Ве добавил -incremental флаг другим Swift аргументов. Я выключил все скрипты и обеспечил файлы не изменились между строит ли не xcodebuild поддержки дополнительные строит? Есть ли способ, чтобы выяснить, почему это происходит? Я использую последнюю версию Xcode и новую систему сборки Xcode 10. Большая часть кода в быстры, если это делает никакой разницы. Edit: изменение назад к старой системе сборки строит постепенно через xcodebuild менее чем за 30 секунд. Ве добавил -incremental флаг другим Swift аргументов. Я выключил все скрипты и обеспечил файлы не изменились между строит ли не xcodebuild поддержки дополнительные строит? Есть ли способ, чтобы выяснить, почему это происходит? Я использую последнюю версию Xcode и новую систему сборки Xcode 10. Большая часть кода в быстры, если это делает никакой разницы. Edit: изменение назад к старой системе сборки строит постепенно через xcodebuild менее чем за 30 секунд.
Jason
0

голосов
1

ответ
7

Просмотры

Как использовать реагировать навигации за пределами экрана

Я хотел бы сделать мое приложение перейти на следующую страницу, если код введен правильно, но я был с много проблем, делая это. Я работаю в именах файлов AccessForm.js, который не является экраном, но является компонентом, который включен в окне кода доступа. Я попытался с помощью this.props.navigation.navigate ( «CreateAccountScreen») ;, но натолкнулся на ошибку «Undefined не является объектом (оценка„this.props.navigation“). С некоторыми проб и ошибок, я узнал, что я можно использовать только реагировать-навигацию внутри фактического экрана по какой-то странной причине. После этого, я сделал попытку использовать this.state и this.setState ({}), чтобы следить за переменный экран, и синхронизировать его с фактическим экран код доступа, так что я мог бы использовать навигацию. К сожалению, this.setState также бросает «Неопределенное не является объектом» ошибка. Я приклеил сокращенную версию моего кода ниже. Что было бы лучшим способом для достижения этой навигационный вне вопроса файла экрана? импорт React из 'реагируют'; импорт {StyleSheet, текст, вид, TextInput, AlertIOS} от 'реагируют родной'; вар firebase = требуется ( "firebase"); если (! firebase.apps.length) {// Не открывать более одной сессии firebase firebase.initializeApp ({// Инициализировать firebase соединения apiKey: "ключ", authDomain: "домен", DatabaseURL: "URL", storageBucket : "storage_bucket",}); } This.codesRef = firebase.database () REF ( 'коды'). // Ссылка на раздел кодов в БД // this.state = {// экран: 0 //}; экспорт класс по умолчанию LoginForm расширяет React.Component {конструктор (реквизит) {супер (реквизит); //этот. checkCode = this.checkCode.bind (это); // кидает ошибку} визуализации () {возвращение (checkCode (text.nativeEvent.text)} // Проверяет код введен autoCapitalize = 'ни' Автозамена = {ложь} />); }} Функция checkCode (текст) {код вар = текст; // Установить введен код вар «код» вар идентификатор = «»; // Используется для хранения уникального идентификатора кода объект codesRef.once ( 'значения', функции (db_snapshot) {пусть codeIsFound = ложная db_snapshot.forEach (функция (code_snapshot) {// Цикл по доступным кодам в дБ, если (код == code_snapshot. Val () значение) {// код для сравнения Db код codeIsFound = TRUE; идентификатор = code_snapshot.key; // код объекта ID}.}), если (codeIsFound) {deleteCode (идентификатор); // Удалить код, если используется, возможно, сделать это после создания учетной записи? this.props.navigation.navigate ( 'CreateAccountScreen'); //this.setState({screen: 1}); // это бросает ошибку // Переход к следующему SCREEN //this.props.navigation.navigate('AccountCreateScreen '); // кидает ошибки} Else {// неправильный код // примечание к себе: добавить сообщение об ошибке на основе состояния вар AlertIOS.alert ( «Мы К сожалению ...», «Введенный код не был найден в базе данных! Пожалуйста, свяжитесь с г-Gibson для получения дополнительной помощи. "); }}); . Функция} deleteCode (ID) {// удалить код из уникального ID firebase.database () ссылок ( 'коды /' + идентификатор) .remove (); } // таблица стилей ниже //this.setState({screen: 1}); // это бросает ошибку // Переход к следующему SCREEN //this.props.navigation.navigate('AccountCreateScreen '); // кидает ошибки} Else {// неправильный код // примечание к себе: добавить сообщение об ошибке на основе состояния вар AlertIOS.alert ( «Мы К сожалению ...», «Введенный код не был найден в базе данных! Пожалуйста, свяжитесь с г-Gibson для получения дополнительной помощи. "); }}); . Функция} deleteCode (ID) {// удалить код из уникального ID firebase.database () ссылок ( 'коды /' + идентификатор) .remove (); } // таблица стилей ниже //this.setState({screen: 1}); // это бросает ошибку // Переход к следующему SCREEN //this.props.navigation.navigate('AccountCreateScreen '); // кидает ошибки} Else {// неправильный код // примечание к себе: добавить сообщение об ошибке на основе состояния вар AlertIOS.alert ( «Мы К сожалению ...», «Введенный код не был найден в базе данных! Пожалуйста, свяжитесь с г-Gibson для получения дополнительной помощи. "); }}); . Функция} deleteCode (ID) {// удалить код из уникального ID firebase.database () ссылок ( 'коды /' + идентификатор) .remove (); } // таблица стилей ниже предупреждение ( «Мы К сожалению ...», «Введенный код не был найден в базе данных, пожалуйста, свяжитесь с г-Gibson для получения дополнительной помощи!».); }}); . Функция} deleteCode (ID) {// удалить код из уникального ID firebase.database () ссылок ( 'коды /' + идентификатор) .remove (); } // таблица стилей ниже предупреждение ( «Мы К сожалению ...», «Введенный код не был найден в базе данных, пожалуйста, свяжитесь с г-Gibson для получения дополнительной помощи!».); }}); . Функция} deleteCode (ID) {// удалить код из уникального ID firebase.database () ссылок ( 'коды /' + идентификатор) .remove (); } // таблица стилей ниже
Michael Hoefler
1

голосов
1

ответ
301

Просмотры

Может быть UIApplicationOpenURLOptionsKey.sourceApplication ноль?

В последнее время после нового обновления приложения, мы начинаем получать аварии в строке пусть sourceApplication = опции [UIApplicationOpenURLOptionsKey.sourceApplication], как! Строка в следующем коде. Я просто интересно, почему это может быть ноль или это сбой из-за, как! нанизывать? Приложение FUNC (_ приложение: UIApplication, открытый URL: URL, опции: [UIApplicationOpenURLOptionsKey: Любой] = [:]) -> Bool {CoreAnalytics.shared.record ( "AppDelegate", действие: "Открыть URL") Branch.getInstance ( ) .handleDeepLink (URL) позволяет sourceApplication = опция [UIApplicationOpenURLOptionsKey.sourceApplication], как! Строка пусть аннотация = опция [UIApplicationOpenURLOptionsKey.annotation] CleverTap.sharedInstance () ?. handleOpen (URL, sourceApplication: sourceApplication). Вернуться GIDSignIn.sharedInstance () рукоятка (URL, sourceApplication: sourceApplication, аннотация: аннотация) || . FBSDKApplicationDelegate.sharedInstance () заявление (приложение, открытое: URL, sourceApplication: sourceApplication, аннотации: аннотация)}
kidsid49
1

голосов
0

ответ
374

Просмотры

Реагировать Native экспа там были пробы загрузки этого опыта

Когда я бегу «ехр старт» из командной строки. мой родной реагировать приложение строит отлично на тренажере и на устройстве. я также бегала ехр начать --no-DEV, который я предполагал, должен был показать, что будет работать с режимом DEV флаг, когда я запустить ехр опубликовать. Когда я запускаю «ехр опубликовать» я получаю Был проблема при загрузке этого опыта. Попробуйте еще раз Ошибка: Модуль AppRegistry не зарегистрирован вызываемая модуль (вызов runApplication) Код ошибки: CLIENT_LOADING_ERROR Код состояния: 2 просто запутался, потому что, если я запустить команду с режимом Dev выключен он по-прежнему нагрузки и отлично работает на тренажере и на устройстве, пока я запустить ехр публиковать и запустить файл ипа на устройстве, то он ломается.
James Woods
1

голосов
1

ответ
275

Просмотры

Как я могу исправить следующую ошибку в Xcode: Ключ команда все должны иметь название, ключ и селектор? [Дубликат]

Этот вопрос уже есть ответ здесь: Ключ команда все должна иметь название, ключ и селектор 3 ответа Я пытаюсь выяснить, почему я получаю эту ошибку: Ключ команда все должна иметь название, ключ и селектор. Каждый раз, когда я открываю новый проект, эта ошибка возникает, прежде чем я что-либо изменить. Я вошел и посмотрел на исходный код для Main.Storyboard, но нет этикетки на всех. Это происходит сразу после создания нового проекта.
Jack Nordquist
1

голосов
0

ответ
142

Просмотры

Анимационные между двумя изображениями на MKAnnotationView

Сейчас я работаю на карту функции, которая содержит аннотации с пользовательскими штифтами. В настоящее время у меня есть все мои аннотации, отображающие с пользовательскими штифтов - своего рода пузырь изображения и больший пузырь для текущего выбранного штифта. Все работает гранд для прошивки 9 и 10, но я ударил небольшую обманку с прошивкой 11. К вопросу о выборе штифта: UIView.AnimateNotify (AnimatePinDuration, 0, NonSpringRatio, InitialSpringVelocity, UIViewAnimationOptions.CurveLinear, () => {view.CenterOffset = новый CGPoint (0.0f, - (pin.Size.Height / 2)); view.Image = контактный;}, NULL); На отмену выбора штифта: UIView.AnimateNotify (AnimatePinDuration, 0, SpringDampingRatio, InitialSpringVelocity, UIViewAnimationOptions.CurveLinear, () => {view.CenterOffset = новый CGPoint (0.0f, - (pin.Size.Height / 2)); view.Image = контактный;}, NULL); Штифт изображение. CenterOffset рассчитывается так, чтобы стержень не изменяет положение, когда изменения изображений. КСН 11 проблема, как представляется, что настройка изображения, как представляется, не могут быть включены в блок анимации. Таким образом, мы получаем это флип меньшего изображения, а затем анимация перемещает изображение в правильное место. Кто-нибудь заметил, что исправление для данного или знать о любых изменениях, которые могут привести к этому. Большое спасибо
Robert
1

голосов
1

ответ
86

Просмотры

Feedback json format wrong

. ReadingOptions.mutableContainers) печать (данные) // Я хочу знать, что это так я печатаю} поймать {печати (error.localizedDescription)}}}) резюме ()} Но консоль всегда говорит: Данные не могут быть читать, потому что это не в правильном формате Это JSON может быть форматом и читать в андроиде, если я использую JSONObject.getJSONArray ( «MyValue») ... Я пытаюсь использовать печать (данные) (без JSon кодирования), чтобы показать, если есть есть какие-либо данные в обратной связи, и я получаю 400byte в консоли, так что я уверен, что есть данные отправить обратно ко мне. ОБНОВЛЕНИЕ 12/28: { "имя": "ABC", "cardNumber": "1234567890", "данные": [{день: 20171228, время: 9:10:11}, {день: 20171226, время: 20: 00:12}, {день: 20171227, время: 15:30:22}]} I» м, что этот JSON можно прочитать в андроиде, приемник и передатчик я использую vb.net, это использовать sendingString = JsonConvert.SerializeObject (JSONClass), чтобы стать JSON строкой, а затем преобразовать байты для отправки. ОБНОВЛЕНИЕ 12/28 новых После попытки так много, я нашел строку можно получить обратную связь, но значение названия китайского слова, другое значение английского и номер, только имя нечитаемое, теперь я проверяю, который String.Encoding будет работать , а затем, если перекодировать его успеха, я буду пытаться форматировать в JSon Array.
Howard
1

голосов
0

ответ
80

Просмотры

Swift - Загрузить / Получение изображений в / из Firebase

Я хочу, чтобы мои пользователи могли устанавливать свои фотографии профиля в моем приложении. Я держу ДАННЫЕ профиля, который содержит пользовательский профиль изображение в качестве табличной ячейки. Тем не менее, у меня были проблемы в моем коде. Это моя функция просмотра таблицы: FUNC Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {если (indexPath.section == 0) {пусть profileInfoCell = tableView.dequeueReusableCell (withIdentifier: "MyProfileInfoCell"), как! MyProfileInfoCell profileInfoCell.profilePicture.tag = indexPath.row пусть пользователь = пользователи [indexPath.row] profileInfoCell.username.text = user.username profileInfoCell.userEmail.text = user.email profileInfoCell.userReputation.text = "имеет 2 ответил любит" / * пусть profilePictureStorageRef = Storage. хранения () ссылки () ребенок ( "profilePicture") ребенок ((Auth.auth () CurrentUser .uid).?!) profilePictureStorageRef.getData (MaxSize:... 1 * 1024 * 1024, завершение: {данные, ошибка если пусть ошибка = ошибка {} еще {пусть IMAGE = UIImage (данные: данные) profileInfoCell.profilePicture.image = изображение!}}) * / вернуться profileInfoCell} И это моя imagePickerController функция: FUNC imagePickerController (_ подборщика: UIImagePickerController, didFinishPickingMediaWithInfo информация: [String: Любой]) {пусть indexPath = NSIndexPath (строка: 0, раздел: 0) пусть клетка = tableView.cellForRow (по адресу: indexPath как indexPath), как! MyProfileInfoCell! если позволить изображение = Информация [UIImagePickerControllerOriginalImage], как? UIImage {? SelectedImage = изображения клеток .profilePicture.contentMode = .scaleAspectFit клеток .profilePicture.image = изображение?} / * Пусть profilePictureStorageRef = Storage.storage () ссылка (forURL:. «GS: //cs401-402.appspot.com ") .child (" profilePicture "). ребенок ((Auth.auth (). CurrentUser? .uid)!), если пусть profilePicture = self.selectedImage, пусть ImageData = UIImagePNGRepresentation ((клетку? .profilePicture.image!)!) {profilePictureStorageRef.putData (ImageData, метаданные: ноль, завершение: {(метаданные, ошибка) в случае ошибки = ноль {возвращение} пусть profilePictureUrl = метаданные .downloadURL () ?. absoluteString self.ref.child ( "пользователи")? .child ((Auth.auth (). CurrentUser .uid)) ребенок ( "profilePicture") SetValue (profilePictureUrl)})} * / self.dismiss (анимированный:!..! правда, завершение: ноль)} Моя программа обрабатывает настройки изображение профиля правильно. Однако, когда я пытаюсь работать с Firebase после выбора картины профиля, у меня возникли проблемы. Закомментированные линии в функции imagePickerController вызывает многократное создание моей ячейки таблицы представления с профилем информацией. Я был бы признателен, если кто-то может мне помочь. Благодарю. Закомментированные линии в функции imagePickerController вызывает многократное создание моей ячейки таблицы представления с профилем информацией. Я был бы признателен, если кто-то может мне помочь. Благодарю. Закомментированные линии в функции imagePickerController вызывает многократное создание моей ячейки таблицы представления с профилем информацией. Я был бы признателен, если кто-то может мне помочь. Благодарю.
atunaysaka
1

голосов
1

ответ
67

Просмотры

JQuery Прикованный - не работает на прошивке

Я использую этот плагин, чтобы получить прикован выберите х. Он работает с настольным браузером (FF, Chrome, и т.д ...), но когда я хочу использовать его на моем iPhone это не работает. Я могу выбрать параметры из первого выбора (например, город). Когда я выбираю город, мой второй выбор должен иметь местные житель из этого города и то, что не работает на IOS, второй выбор отключаются все время. Я попытался изменить цепочечный код и добавлен кран, touchstart, но это не помогает. $ ( "#" Местные жители) прикован ( "# город"). Выбрать город Город A Город B Выберите местный Местный Местный A-1 Местное B-1 Local B-2 Local B-3
MMPL1
1

голосов
1

ответ
98

Просмотры

In-App Покупка перенаправляет на другой контроллер зрения

Я играю за пару дней уже с покупками в приложении и нашли следующий вопрос (дайте мне знать, если это ожидаемое поведение). У меня есть приложение на TestFlight в данный момент, а не в Apple Store. У меня есть список элементов, которые пользователь может приобрести и когда пользователь нажимает «Покупку» она проходит через все обычные шаги: продукт выбрана, то я показываю свою AlertViewController с подтверждением покупки, а по завершению «представить» действие AlertViewController я называю buyProduct в моем менеджере IAP. Затем в диалоговом окне появляется нормальный диалог о «Отмена / Покупка» «Подтвердить In-App Purchase» с [Окружающая среда: Песочница] и т.д. Однако, когда я нажимаю «Купить» Я перенаправлены на предыдущую View Controller и «Вы все готово «. отображается на предыдущем View Controller, а не один я был. Если это нормально для TestFlight версии - то хорошо. Если это поведение у меня будет в Apple Store, то это плохо, мне нужно исправить. Вот мой в-приложение менеджер по закупкам: класс IAPManager: NSObject {статического пусть sharedInstance = IAPManager () статический пусть IAPManagerPurchaseNotification = "IAPManagerPurchaseNotification" fileprivate вар productsRequest: SKProductsRequest? fileprivate вар productsRequestCompletionHandler: ProductsRequestCompletionHandler? FUNC инициализации () {SKPaymentQueue.default (). добавить (Я)} функ деинициализации () {SKPaymentQueue.default (). удалить (Я)} /// Запрос продукции от Apple Store. /// - параметр продукции: IAPProduct купить. FUNC requestProduct (продукты: [IAPProduct], _ completionHandler: @escaping ProductsRequestCompletionHandler) {productsRequest ?. отменить () productsRequestCompletionHandler = completionHandler вар productIdentifiers: Set = Set () для продукта в продуктах {productIdentifiers.insert (product.rawValue)} productsRequest = SKProductsRequest (productIdentifiers: productIdentifiers)? productsRequest .delegate = само productsRequest .start ()} / // Есть ли фактические покупки от Apple Store. /// - параметр продукт: продукт, который пользователь хочет приобрести. FUNC buyProduct (_ продукт: SKProduct) {Log.info (сообщение: "Пользователь \ (UsersManager.sharedInstance.currentUserId) покупает \ (product.productIdentifier)", отправитель: самостоятельно) пусть оплаты = SKPayment (продукт: продукт) SKPaymentQueue. . (по умолчанию) добавить (платежные)} класс функ canMakePayments () -> Bool {вернуться SKPaymentQueue. canMakePayments ()} /// Восполнение ранее приобретенных без расходных материалов. функ restorePurchases () {. SKPaymentQueue.default () restoreCompletedTransactions ()}} расширение IAPManager: SKProductsRequestDelegate {FUNC productsRequest (_ запрос: SKProductsRequest, didReceive ответ: SKProductsResponse) {Log.info (сообщение: "Loaded список продуктов ..." отправитель: само) пусть продукция = response.products productsRequestCompletionHandler? (правда, продукты) clearRequestAndHandler () для р в продуктах {log.info (сообщение: «Найдено продукт: \ (p.productIdentifier) ​​\ (p.localizedTitle) \ ( p.price.floatValue) "отправитель: Я)}} запрос FUNC (_ запрос: SKRequest, didFailWithError ошибка: Error) {Log.error (сообщение:" Не удалось загрузить список продуктов с ошибкой: \ (error.localizedDescription) », отправитель: самостоятельно), если пусть transactionError = transaction.error в NSError? {Если transactionError.code = SKError.paymentCancelled.rawValue {Log.error (сообщение: "Ошибка транзакции: \ (transactionError.localizedDescription)", отправитель: самостоятельно)!}}. SKPaymentQueue.default () finishTransaction (транзакция)} частная функ deliverPurchaseNotificationFor (идентификатор: String) {охранник пусть идентификатор = идентификатор еще {возвращение} NotificationCenter.default.post (имя: NSNotification.Name (RawValue: IAPManager.IAPManagerPurchaseNotification), объект: идентификатор)}} Код, который вызывает IAPManager: пусть тревога = UIAlertController (название: "", сообщение: "", preferredStyle: .alert) IAPManager.sharedInstance.requestProduct (продукты: [продукт]) {успех, продукты в караульной успеха,
Array
1

голосов
0

ответ
347

Просмотры

Swift класс в ObjC проекте: Получатель «MySwiftClass» для класса сообщения является опережающим объявлением

Проведя несколько часов, чтобы интегрировать оперативные файлы успешно на мой основе Objective-C проект IOS, я сталкиваюсь следующий вызовом Сейчас: В одном из моего заголовка класса Objective-C (Say, MyObjCClass.h), я делаю опережающее объявление для MySwiftClass , В соответствующем файле .m я определяю экземпляр MySwiftClass _swiftClassInstance. В методе инициализации из MyObjCClass, я пытаюсь создать экземпляр его следующим образом: _swiftClassInstance = [[MySwiftClass Alloc] инициализации]; Когда я компилирую код, я получаю 2 ошибки: Получатель «MySwiftClass» для класса сообщения является опережающим объявлением приемника типа «MySwiftClass», например, сообщения является опережающим объявлением я уже сделал следующее: импортированная MyProject-Swift.h в MyObjCClass. м-файл. Маркировал быстрый класс с @objc и открытой Итак, что может быть причиной проблемы?
Harish J
1

голосов
2

ответ
401

Просмотры

Determine UICollectionView cell height only by autolayout

Мне нужен вид сбора, который отображает ячейки в сетке. Таким образом, стандартная раскладка потока хорошо для меня. Тем не менее, я хочу сказать, сколько ячеек, чтобы показать в строке, в то время как высота ячейки должна определяться autolayout ограничениями, которые я ставлю на ячейку. Вот мой макет ячейки: Это довольно просто - вид в изображение и две метки под ним. Теперь вид изображения имеет соотношение сторон ограничения (1: 1), что означает, когда ширина известна ячейка высота должна быть автоматически известной по правилам автоматической компоновки (есть вертикальные ограничения, проходящие через: celltop-образ-label1-label2 -cellbottom). Теперь, так как я не знаю ни одной другой хороший способ сказать, вид коллекции, чтобы показать 2 штук в ряд, я переопределены методы UICollectionViewDelegateFlowLayout: FUNC CollectionView (_ CollectionView: UICollectionView, расположение collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {пусть availableWidth = collectionView.frame.width - обивка пусть widthPerItem = availableWidth / itemsPerRow вернуться CGSize (ширина: widthPerItem, высота: widthPerItem)} Как вы можете видеть, так как я не знаю, высота товар я вернуть ту же вещь, как ширина, в надежде, что autolayout будет исправить позже. Я также установить estimatedItemSize, чтобы весь механизм, чтобы начать работать. Результаты довольно странно - кажется, что вид коллекции не события принимают во внимание ширину я вернуться туда, в основном, в зависимости от длины этикетки: Я видел некоторые другие ответы, где люди рекомендуют вручную расчет размера ячейки для ширины, как говоря «макет себя, а затем измерить, то дайте мне ваш размер для этой ширины»,
frangulyan

Просмотр дополнительных вопросов