2013-10-25 2 views
2

Я создаю настройку отправки SMS по умолчанию для приложения MobileSMS, поставляемого с iOS 6.1. Несмотря на то, что мне удалось подключиться к кнопке «Отправить», я не могу создать всплывающее окно, чтобы информировать пользователя, ни с UIAlertView, ни с UIViewController. Я думаю, проблема заключается в том, что класс CTMmsEncoder, к которому я подключен, не имеет контроллера вида, чтобы каким-то образом переопределить.Показать UIAlertView или UIViewController в Логотипе Tweak

Мой вопрос: если есть какой-то способ, я могу сделать вид в такой ситуации. Я просмотрел множество исходных кодов для настроек, но не могу найти подобный случай. Я даже пытался создать dylib и загрузить аа UIViewController оттуда, но получить (ожидаемое) сообщение об ошибке:

Oct 25 14:37:59 Pudge SpringBoard[950] <Warning>: Warning: Attempt to present <ModalViewController: 0x1dbbe1a0> on <KSMSDylibViewOne: 0x1db7da50> whose view is not in the window hierarchy! 

При попытке реализовать класс с ViewController непосредственно в моей подстройке (скажем класс ModalViewController), то Теос, очевидно, выводит ошибку:

Tweak.xm:12:6: error: instance method 'presentViewController:animated:completion:' is being used on 'Class' which is not in the root class 
     [-Werror,-Wobjc-method-access] 
    [self presentViewController:view animated:YES completion:nil]; 
    ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

Есть ли способ преодолеть это, или мне нужно перепроектировать?

Спасибо заранее,

Panagiotis.

ответ

2

Если вы просто хотите создать что-то вроде того, что у вас есть с UIAlertView, вы сможете использовать CFUserNotificationCreate() даже в ситуации, когда у вас нет правильной иерархии.

Смотрите эту answer by KennyTM или другой I posted here ... пропуск в Уведомлять пользователя из Daemon раздела, пункт (2).

+0

Это, очевидно, очень хороший подход, но может ли он позволить пользователю вводить данные? Если бы я хотел добавить пароль для ввода пользователем перед отправкой SMS, ваше предложение (2) создало бы предупреждение или (1) открыло другое приложение (если бы я получил его правильно), правильно? – Panagiotis

+0

@Panagiotis, если под «пользовательским вводом» вы подразумеваете добавление текстового поля или что-то в этом роде ... нет, это не так. Но «UIAlertView», упомянутый в вашем вопросе, тоже. Правильно, мое предложение (2) в связанном ответе - это просто всплывающее оповещение, а (1) - это способ полностью открыть приложение пользовательского интерфейса (в этом случае из фонового демона). Надеюсь, что это делает вещи более ясными. – Nate

+0

@ Panagiotis, на самом деле, мне, возможно, придется поправиться. Точный код, который я показываю, не дает вам ничего, кроме кнопок, но если вы посмотрите [в документах Apple здесь] (https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFUserNotificationRef/Reference/reference .html), кажется, что вы также можете создавать текстовые поля в своем предупреждении. Это набор API-интерфейсов Mac OS X, поэтому, если у вас есть вопрос о том, как настроить CFUserNotification, вы можете пометить его 'osx' вместо' iphone' или 'ios'. Те же API-интерфейсы должны работать на iOS, они просто * private *. – Nate