2016-09-26 2 views
1

У меня есть UITextView с интерактивными ссылками в нем. Ссылки создаются путем поиска текста для определенных слов или фраз, содержащихся в placesArray, как показано ниже:Создание ссылок с пробелами в UITextView - iOS Swift

for place in placesArray { 
    let range = (text as NSString).range(of: place) 
    attributedText.addAttribute(NSFontAttributeName, value: UIFont(name:"Helvetica-Bold", size:16.0)!, range: range) 
    attributedText.addAttribute(NSLinkAttributeName, value: place, range: range) 
} 

Все работает отлично, за исключением того, когда связь создается из фразы, которая имеет пробелы в нем, вроде « Галилейское море ". Когда я нажимаю эту ссылку, приложение падает. Ничего не отображается в окне отладки, но я вижу «Thread 1: EXC_BREAKPOINT (code = 1, subcode = 0x1007efc14)» в моем приложении AppDelegate. Как я могу это исправить?

+0

Если аварии приложение, должно быть сообщение об ошибке, что один? – Larme

+0

Я редактировал вопрос, чтобы включить сообщение об ошибке. –

+0

Вы решили проблему? У меня такой же вопрос! Спасибо – HungCLo

ответ

0

place.addingPercentEncoding (withAllowedCharacters: .urlQueryAllowed) или сделать связываемый URL (удалить пробел или другой)

0

Я нашел альтернативное решение, просто удалить пробелы, как этот

for place in placesArray { 
    let range = (text as NSString).range(of: place) 
    attributedText.addAttribute(NSFontAttributeName, value: UIFont(name:"Helvetica-Bold", size:16.0)!, range: range) 

--> let newPlace = place.replacingOccurrences(of: " ", with: "") 

    attributedText.addAttribute(NSLinkAttributeName, value: newPlace, range: range) 
} 

Надежда это помогает.

0

Я закончил с использованием addingPercentEncoding:

for place in placesArray { 

    let value = place.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) 
    let range = (text as NSString).range(of: place) 

    attributedText?.addAttribute(NSFontAttributeName, value: UIFont(name:"Helvetica-Bold", size:16.0)!, range: range) 
    attributedText?.addAttribute(NSLinkAttributeName, value: value!, range: range) 

} 
Смежные вопросы