2015-12-05 2 views
0

На этот вопрос много ответов, но на iOS 9 есть некоторые проблемы. Когда я использую этот код:набирая iPhone на iOS9

NSString *phoneNumber = [@"telprompt://" stringByAppendingString:self.lblPhone.text]; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]]; 

Я получил эту ошибку:

LaunchServices: ERROR: There is no registered handler for URL scheme (null)

Тогда я изменить info.plist с этим:

<key>LSApplicationQueriesSchemes</key> 
<array> 
    <string>telprompt</string> 
    <string>tel</string> 
</array> 

Но ничего не изменилось!

Так что я попробовал второй код, и это работает:

NSString *numberString = @"004986632461"; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"telprompt://%@",numberString]]]; 

Но это не:

NSString *numberString = [NSString stringWithFormat:@"%f", [[_lblPhone text] floatValue]]; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"telprompt://%@",numberString]]]; 

Это набор, но номер не так. Есть идеи?

+0

Вместо использования составных операторов разделять их с помощью промежуточных переменных, чтобы вы могли легче отлаживать, что упростит понимание кода и проблемы. В этом случае с 'NSURL * telURL = [NSURL URLWithString: phoneNumber];' вы легко увидите, что URL-адрес и сможете сосредоточиться на решении. – zaph

+2

Почему вы пытаетесь обрабатывать номер телефона как значение «float»? Номера телефонов - это строки, а не номера. – rmaddy

+0

Что такое phoneNumber & numberString, NSLog их всех и добавить, что yo y question – zaph

ответ

2

Ваш второй бит кода не работает, потому что вы пытаетесь отформатировать текст как значение с плавающей запятой.

Эта линия:

NSString *numberString = [NSString stringWithFormat:@"%f", [[_lblPhone text] floatValue]]; 

приведет к значению 4986632704.000000 для строки @"004986632461".

Пропустить float часть. Просто выполните:

NSString *numberString = _lblPhone.text; 

Никогда не пытайтесь обрабатывать телефонный номер как числовое значение. Это текст и должен обрабатываться (и храниться) только как текст.

+0

Спасибо, но эта версия я тоже пробовал. Вот тот же ErrorCode: LaunchServices: ERROR: нет зарегистрированного обработчика схемы URL (null) – wolli911

+0

Глупый вопрос, но вы тестируете на реальном устройстве? Вы не можете проверить это на симуляторе. – rmaddy

+0

Да, я знаю, что есть разница между симулятором и iPhone. Поэтому я стараюсь только на реальном устройстве! Спасибо за вопрос. – wolli911

0

Try:

NSString *phoneNumber = [@"tel://" stringByAppendingString:self.lblPhone.text]; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]]; 

Ранее telprompt использовался большинством разработчиков, так как он будет возвращаться в приложение после вызова в то время как tel вернется к исходному экрану. Но начиная с iOS 8, tel вернется в приложение после звонка. Поэтому вы можете использовать это.

+0

Спасибо за ответ сразу, но после компиляции и запуска на iPhone у меня получился этот ErrorCode: LaunchServices: ОШИБКА: Нет зарегистрированного обработчика схемы URL (null) – wolli911

-2

Я сам решил эту проблему. Это очень легко. Я должен очистить невидимые пространства!

NSString *numberString = [_lblPhone.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
+1

Нет, вы сами не решили это. У вас была большая помощь, включая мой ответ и мои комментарии, где я сказал вам убедиться, что в строке нет пробелов. – rmaddy

+0

Если бы я мог делать это каждый день, я бы сделал это. –