2014-08-01 4 views
0

Я работаю с Xcode 6.0 и быстрым. UIAlertView и UIAlertController (пример: следующие 2 функции) отлично работают на myViewController, унаследованном от UIViewController, но они вылетают из KeyboardViewController, унаследованного от UIInputViewController. Разве Apple не разрешает предупреждение на пользовательской клавиатуре или нет ошибки в моем кодировании? Любые ответы приветствуются и оцениваются.Ошибка UIAlertView на UIInputViewController

func viewAlert() { 
    var alertView = UIAlertView() <——— 
    alertView.addButtonWithTitle("Ok") 
    alertView.title = "title" 
    alertView.message = "message" 
    alertView.show() 
}  
func viewAlert0() { 
    var alert = UIAlertController() <——— 
    alert.title = "title" 
    alert.message = "are disabled in your device" 
    alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.Default, handler: nil)) 
    self.presentViewController(alert, animated: true, completion: nil) 
} 

< --- Точка ошибки отладчик:

0x325ca19: CALLL 0x327e620; символ заглушки для: pthread_kill 0x325ca1e: movl $ 0x2710, (% esp) 0x325ca25: calll 0x327ec50; Символ заглушки для: USleep $ NoCancel 0x325ca2a: MOVL $ 0xffffffe7, -0xc (% EBP) 0x325ca31: MOVL% ЭРИ, 0x4 (% ЭСП) 0x325ca35: MOVL $ 0x0, 0x8 (% ЭСП) 0x325ca3d: MOVL $ 0x3 , (% esp) 0x325ca44: calll 0x327e476; символ заглушки для: sigprocmask 0x325ca49: ud2 < ====== Тема 1: EXC_BAD_INSTRUCTION (код = EXC_i386_INVOP, субкодовое = 0x0)

+0

'UIAlertView' устарели в iOS 8, поэтому зачем использовать их вообще. – Popeye

+0

Popyeye, спасибо за ответ. более важным является то, что UIAlertController - рекомендуется в iOS 8 - то же самое. Дело в том, что все они отлично работают в UIViewController, но не в UIInputviewController. – fred

+0

Честно говоря, я не очень быстро заглянул в нее, поэтому я не совсем уверен. Все, что я знаю на самом деле, это то, что 'UIAlertView' устарели в iOS8 как для объектных, так и для быстрых. Если я увижу что-нибудь, что может помочь, я вернусь и передам вам. – Popeye

ответ

0

С прошивкой 8, у нас есть новый макрос:

NS_EXTENSION_UNAVAILABLE_IOS 

IOS не позволяет использовать некоторый класс в EXTENSION

прошивки не позволяет использовать AlertView или AlertController, если вы строите CUSTOM KEYBOARD EXTENSION

подробнее:

0

В Ther надеюсь, что это может помочь кому-то в Swift:

Предположим, у вас есть LIB, который должен работать с прошивкой и расширений (в мае случае я использую UIApplication .sharedApplication(). keyWindow, который недоступен для расширений)

#if NS_EXTENSION_UNAVAILABLE_IOS 


func captureScreen() -> UIImage { 

    let window = UIApplication.sharedApplication().keyWindow 
    let scale = UIScreen.mainScreen().scale 

    UIGraphicsBeginImageContextWithOptions(window!.bounds.size, false, scale) 

    window?.layer.renderInContext(UIGraphicsGetCurrentContext()!) 
    let image : UIImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return image 
} 


#else 
#endif 

с использованием #ifdef позволяют нам скомпилировать этот файл как для iOS, так и для расширения.

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