फ़ोन एप्लिकेशन के उदाहरण पर एक ट्वीक बनाना। वहाँ एक प्लस हो!

नमस्कार, हरामजिती!

प्रागितिहास


IOS 7 की रिलीज़ के बाद, कुछ उपयोगकर्ताओं को फोन ऐप के साथ समस्याओं के बारे में शिकायत करना शुरू हुआ। समस्या का सार यह है कि अंतर्राष्ट्रीय प्रारूप +375 (कोड) xxx-xx-xx में एक नंबर डायल करते समय, आप '+' डायल नहीं कर सकते। यदि आप '0' को पकड़ते हैं, तो प्लस के बजाय हमें तीन उंगलियों '0+' का संयोजन मिलता है। समस्या सबसे अधिक स्थानीय है, क्योंकि, बेलारूस के उपयोगकर्ताओं के अलावा, किसी और ने अपना असंतोष व्यक्त नहीं किया।

विभिन्न कारणों से, मैंने लंबे समय तक iOS 7 में अपग्रेड नहीं किया था। लेकिन अद्यतन अप्रिय रूप से हैरान था। कई छोटे अपडेट जारी होने के बावजूद समस्या बनी हुई है। मंचों को पढ़ने के बाद, मुझे इस समस्या के निम्नलिखित समाधान मिले:
  1. डायल करते समय 8 का उपयोग करें
  2. 00 का उपयोग करें
  3. '0' को पकड़े हुए, जब तक एक प्लस प्रकट नहीं होता है, तब तक बटन को दबाएं

पहला विकल्प काफी कार्यात्मक है। मैं दूसरे नंबर का उपयोग करके कॉल नहीं कर सकता, सबसे अधिक संभावना है कि मेरा ऑपरेटर इस प्रारूप का समर्थन नहीं करता है। तीसरा काम करता है, लेकिन इसके लिए कौशल और दूसरे हाथ की आवश्यकता होती है, और इसके बाहर ठंड होती है।

और फिर मैंने इस छोटी सी गलतफहमी को एक ट्वीक के साथ ठीक करने का फैसला किया।

चलो चलते हैं!


थोस का उपयोग करते हुए एक ट्विस्ट के निर्माण के बारे में हब पर पहले से ही एक लेख था, इसलिए प्रोजेक्ट के निर्माण को छोड़ दें और थोस को कॉन्फ़िगर करें और सीधे दिलचस्प पर जाएं।

इसलिए, चूंकि हम फोन एप्लिकेशन में कुछ बदलने जा रहे हैं, इसलिए यह जानना अच्छा होगा कि यह अंदर क्या है। मेरे डिवाइस पर, एप्लिकेशन /var/stash/Applications.BTFCTa/MobilePhone.app में था। हम class-dump उपयोगिता का उपयोग करेंगे और क्लास प्रोटोटाइप की एक सूची प्राप्त करेंगे।

 ➜ class-dump -H -o MobilePhone MobilePhone.app 

जैसा कि यह निकला, उनमें से कुछ भी नहीं हैं।
हेडर्स लिस्ट
ABNewPersonViewControllerDelegate-Protocol.h
ABPeoplePickerNavigationControllerDelegate-Protocol.h
ABPeoplePickerNavigationControllerPrivateMemberCellDelegate-Protocol.h
ABUnknownPersonViewControllerDelegate-Protocol.h
AVCaptureFileOutputRecordingDelegate-Protocol.h
AudioDeviceController.h
CDStructures.h
CNFRegWizardControllerDelegate-Protocol.h
CommunicationDisplayViewController.h
ConferenceManagementTable.h
DialerController.h
DialerLCDFieldDelegate-Protocol.h
DialerLCDFieldProtocol-Protocol.h
DialerViewDelegate-Protocol.h
IDSIDQueryControllerDelegate-Protocol.h
InCallBottomButton.h
InCallController.h
InCallLCDField.h
InCallLCDView.h
MPDetailSliderDelegate-Protocol.h
MobilePhoneApplication.h
NSArray-MPRecentsExtensions.h
NSDate-DayComparison.h
NSDictionary-PHVoicemailAudioController.h
NSDictionary-VoicemailAudioRouting.h
NSError-VoicemailExtras.h
NSIndexSet-MPRecentsExtensions.h
NSObject-Protocol.h
PHAbstractDialerView.h
PHAddressBookController.h
PHAudioPlayer.h
PHAudioPlayerDataSource-Protocol.h
PHAudioPlayerDelegate-Protocol.h
PHAudioPlayerVoicemailDataSource.h
PHAudioRecorder.h
PHAudioRecorderDelegate-Protocol.h
PHConferenceParticipantCell.h
PHConferenceParticipantCellProtocol-Protocol.h
PHEmergencyDialerButton.h
PHEmergencyDialerViewController.h
PHEmergencyHandsetDialerLCDView.h
PHEmergencyHandsetDialerView.h
PHFavoritesCell.h
PHFavoritesContactPhotoView.h
PHFavoritesEntry.h
PHFavoritesManager.h
PHFavoritesViewController.h
PHHandsetDialerLCDView.h
PHHandsetDialerNameLabelView.h
PHHandsetDialerView.h
PHInCallNumberPadButton.h
PHInCallRingView.h
PHInfoButtonMaskView.h
PHRecentCall.h
PHRecentMultiCall.h
PHRecentsCell.h
PHRecentsManager.h
PHRecentsPersonFaceTimeHeaderSummaryView.h
PHRecentsPersonFaceTimeHeaderView.h
PHRecentsPersonHeaderSummaryView-Protocol.h
PHRecentsPersonHeaderView.h
PHRecentsPersonPhoneHeaderSummaryView.h
PHRecentsPersonPhoneHeaderView.h
PHRecentsToggleButton.h
PHRecentsViewController.h
PHStarkActionSheetTableViewCell.h
PHStarkActionSheetViewController.h
PHStarkDialerLCDView.h
PHStarkDialerView.h
PHStarkDialerViewController.h
PHStarkFavoritesTableViewCell.h
PHStarkFavoritesViewController.h
PHStarkGenericTableViewCell.h
PHStarkGenericTableViewController.h
PHStarkGenericViewController.h
PHStarkHardwareControlsBroadcaster.h
PHStarkHardwareMenuTableViewCell.h
PHStarkInCallDialerLCDView.h
PHStarkInCallDialerView.h
PHStarkInCallKeypadViewController.h
PHStarkInCallViewController.h
PHStarkLozengeLabel.h
PHStarkMainMenuContainerViewController.h
PHStarkManager.h
PHStarkNoContentBannerView.h
PHStarkPlayPauseButton.h
PHStarkRecentsTableViewCell.h
PHStarkRecentsViewController.h
PHStarkRootContainerViewController.h
PHStarkTelephonyStateMonitor.h
PHStarkTelephonyStateMonitorDelegate-Protocol.h
PHStarkVoicemailManager.h
PHStarkVoicemailPlayerViewController.h
PHStarkVoicemailTableViewCell.h
PHStarkVoicemailViewController.h
PHStaticDialerPad.h
PHTextCycleLabel.h
PHVoicemailAudioController.h
PHVoicemailBlockedListViewController.h
PHVoicemailCell.h
PHVoicemailCellConfigurationDelegate-Protocol.h
PHVoicemailCellDelegate-Protocol.h
PHVoicemailFolderCell.h
PHVoicemailGreetingCell.h
PHVoicemailGreetingViewController.h
PHVoicemailGreetingViewControllerDelegate-Protocol.h
PHVoicemailInboxListViewController.h
PHVoicemailListMaskView.h
PHVoicemailListMaskViewDelegate-Protocol.h
PHVoicemailListViewController.h
PHVoicemailListViewControllerConcrete-Protocol.h
PHVoicemailNavigationController.h
PHVoicemailNoContentViewController.h
PHVoicemailSetupViewController.h
PHVoicemailSlider.h
PHVoicemailTrashListViewController.h
PHVoicemailUnavailableCell.h
PhoneApplication.h
PhoneBadgeable-Protocol.h
PhoneBaseViewController-Protocol.h
PhoneContentView.h
PhoneDesktopView.h
PhoneNavigationController.h
PhoneRootView.h
PhoneRootViewController.h
PhoneTabBarController.h
PhoneTabViewController-Protocol.h
PhoneViewController.h
RadiosPreferencesDelegate-Protocol.h
SixSquareButton.h
SixSquareView.h
TPDialerKeypadDelegate-Protocol.h
TPSetPINViewControllerDelegate-Protocol.h
TPStarkInCallViewControllerDelegate-Protocol.h
TPSuperBottomBarDelegateProtocol-Protocol.h
UIActionSheetDelegate-Protocol.h
UIApplicationDelegate-Protocol.h
UIFont-MobilePhoneAdditions.h
UIFont-UIFont_InCallLCDView.h
UIGestureRecognizerDelegate-Protocol.h
UIImage-MobilePhoneAdditions.h
UINavigationControllerDelegate-Protocol.h
UIScrollViewDelegate-Protocol.h
UITabBarControllerDelegate-Protocol.h
UITableView-PHStarkExtensions.h
UITableViewCell-VoicemailCellAdditions.h
UITableViewDataSource-Protocol.h
UITableViewDelegate-Protocol.h
UIViewController-Testing.h
VMVoicemail-MobilePhone.h
VideoConferenceController.h

मेरे कार्यों का आगे का तर्क इस प्रकार था। चूंकि हमें बटन पर क्लिक करने में कोई समस्या है, तो आपको उस चीज़ की तलाश करने की ज़रूरत है जो इसके साथ जुड़ी हुई है।

 ➜ ls | grep -i "key" PHStarkInCallKeypadViewController.h TPDialerKeypadDelegate-Protocol.h 

TPDialerKeypadDelegate-Protocol.h काफी दिलचस्प निकला। यह, जैसा कि आप देख सकते हैं, बटन दबाने के लिए जिम्मेदार तरीकों का वर्णन करता है।

 #import "NSObject.h" @protocol TPDialerKeypadDelegate <NSObject> @optional - (void)phonePad:(id)arg1 dialerCharacterButtonWasHeld:(unsigned int)arg2; - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2; - (void)phonePadDidEndSounds:(id)arg1; - (void)phonePadWillBeginSounds:(id)arg1; - (void)phonePad:(id)arg1 keyUp:(BOOL)arg2; - (void)phonePad:(id)arg1 keyDown:(BOOL)arg2; - (void)phonePadDeleteLastDigit:(id)arg1; - (void)phonePad:(id)arg1 appendString:(id)arg2; @end 

खैर, चूंकि यह एक प्रोटोकॉल है, तो कोई इसे लागू कर रहा है!

 ➜ grep -l -r "TPDialerKeypadDelegate" . ./DialerController.h ./InCallController.h ./PHEmergencyDialerViewController.h ./PHHandsetDialerView.h ./TPDialerKeypadDelegate-Protocol.h 

बाद में, वैज्ञानिक प्रहार विधि का उपयोग करते हुए, यह पता चला था कि DialerController वह वर्ग है जिसकी हमें आवश्यकता है, और phonePad:replaceLastDigitWithString: वह विधि है जिसकी हमें आवश्यकता है। आप निम्न कोड लिखकर इसे सत्यापित कर सकते हैं:

 #import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { %log; %orig(arg1, arg2); } %end 

लॉग दिखाता है कि अंतिम पैरामीटर वह है जो हमें चाहिए:

 <Warning>: -[<DialerController: 0x165e91e0> phonePad:<TPDialerNumberPad: 0x1677fc40; baseClass = UIControl; frame = (28 84; 264 296); opaque = NO; layer = <CALayer: 0x1677f1d0>> replaceLastDigitWithString:+] 

अब यह जानना अच्छा होगा कि स्ट्रिंग कहाँ संग्रहीत की जाती है, जिसमें हमारा प्लस जोड़ा जाता है। ऐसा करने के लिए, फिर से DialerController
DialerController.h
 #import "PhoneViewController.h" #import "ABNewPersonViewControllerDelegate.h" #import "ABPeoplePickerNavigationControllerDelegate.h" #import "DialerViewDelegate.h" #import "TPDialerKeypadDelegate.h" #import "UIActionSheetDelegate.h" @class NSString, NSTimer, PHAbstractDialerView, UINavigationController; @interface DialerController : PhoneViewController <ABNewPersonViewControllerDelegate, ABPeoplePickerNavigationControllerDelegate, DialerViewDelegate, UIActionSheetDelegate, TPDialerKeypadDelegate> { PHAbstractDialerView *_dialerView; UINavigationController *_newContactNavigationController; NSTimer *_deleteTimer; NSTimer *_lookupTimer; NSString *_lastDialedNumberCache; NSString *_myPrefix; int _shouldUseMyPrefixAsHint; unsigned int _calledNumber:1; unsigned int _didDeleteRepeat:1; unsigned int _dtmfPlaying; int _dialerType; } + (id)defaultPNGName; + (id)tabBarIconName; + (id)tabBarIconImageSelected; + (id)tabBarIconImage; + (id)tabBarIconImageName; + (int)tabViewType; + (BOOL)launchFieldTestIfNeeded:(id)arg1; + (BOOL)shouldStringAutoDial:(id)arg1 givenLastChar:(BOOL)arg2; @property int dialerType; // @synthesize dialerType=_dialerType; @property(readonly) PHAbstractDialerView *dialerView; // @synthesize dialerView=_dialerView; - (void)_statusBarHeightChanged:(id)arg1; - (void)_handleSIMInsertionOrRemoval; - (void)performDeleteAction; - (void)performCallAction; - (void)_deleteButtonDown:(id)arg1; - (void)_deleteButtonClicked:(id)arg1; - (void)_stopDeleteTimer; - (void)_startDeleteTimer; - (void)_deleteRepeat; - (void)peoplePickerNavigationController:(id)arg1 insertEditorDidConfirm:(BOOL)arg2 forPerson:(void *)arg3; - (BOOL)peoplePickerNavigationController:(id)arg1 shouldShowInsertEditorForPerson:(void *)arg2 insertProperty:(int *)arg3 copyInsertValue:(id *)arg4 copyInsertLabel:(id *)arg5; - (BOOL)peoplePickerNavigationController:(id)arg1 shouldContinueAfterSelectingPerson:(void *)arg2 property:(int)arg3 identifier:(int)arg4; - (BOOL)peoplePickerNavigationController:(id)arg1 shouldContinueAfterSelectingPerson:(void *)arg2; - (void)peoplePickerNavigationControllerDidCancel:(id)arg1; - (void)newPersonViewController:(id)arg1 didCompleteWithNewPerson:(void *)arg2; - (void)actionSheet:(id)arg1 clickedButtonAtIndex:(int)arg2; - (void)_dismissNewContactView:(BOOL)arg1; - (void)actionSheet:(id)arg1 didDismissWithButtonIndex:(int)arg2; - (void)_addButtonClicked:(id)arg1; - (void)_addToExistingContact; - (void)_addToNewContact; - (id)_qualifyNumberIfNecessary:(id)arg1; - (void *)_newPersonWithValue:(id)arg1 forMultiValueProperty:(int)arg2; - (void)_hideNewContactView; - (void)_showNewContactView; - (void)_dialVoicemail; - (void)phonePad:(id)arg1 keyUp:(BOOL)arg2; - (void)phonePad:(id)arg1 keyDown:(BOOL)arg2; - (void)phonePadDidEndSounds:(id)arg1; - (id)_myPrefix; - (BOOL)_shouldUseMyPrefixAsHint; - (void)phonePadDeleteLastDigit:(id)arg1; - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2; - (void)_phonePad:(id)arg1 appendString:(id)arg2 suppressClearingDialedNumber:(BOOL)arg3; - (void)phonePad:(id)arg1 appendString:(id)arg2; - (void)phonePad:(id)arg1 dialerCharacterButtonWasHeld:(unsigned int)arg2; - (void)starkInCallViewControllerAppearedNotification:(id)arg1; - (void)_callButtonPressed:(id)arg1; - (void)_callButtonLongPress; - (void)_updateCallButtonEnabledState:(id)arg1; - (void)_updateLCDNameLabelWithOriginallyPastedString:(id)arg1; - (void)_updateLCDNameLabelWithAMatchingName:(BOOL)arg1; - (void)_updateCallButtonEnabledState:(id)arg1 updateNameNow:(BOOL)arg2; - (void)dialerView:(id)arg1 stringWasPasted:(id)arg2; - (void)dialerViewTextDidChange:(id)arg1; @property(retain) NSString *lastDialedNumber; - (void)_getPersonName:(id *)arg1 personLabel:(id *)arg2 personUID:(int *)arg3 forPhoneNumberString:(id)arg4; - (void)_updateName; - (void)_stopLookupTimer; - (BOOL)shouldSnapshot; - (void)prepareForSnapshot; - (void)_clearDisplayIfNecessary; - (void)dealloc; - (id)initWithDialerType:(int)arg1; - (void)applicationDidResume; - (void)viewDidDisappear:(BOOL)arg1; - (void)viewWillDisappear:(BOOL)arg1; - (void)viewDidAppear:(BOOL)arg1; - (void)viewWillAppear:(BOOL)arg1; - (BOOL)_isFirstLaunchFromDefaultPNGToDialer; - (BOOL)isShowingDoubleHeightStatusBar; - (void)unloadView; - (void)didReceiveMemoryWarning; - (void)dialerViewPhoneNumberWasTapped:(id)arg1; - (void)loadView; @end 


सोर्रो, एक स्पष्ट स्थान जहां पाठ रखा जाएगा, दिखाई नहीं देता है। लेकिन _dialerView चर और PHAbstractDialerView वर्ग को देखें।
PHAbstractDialerView.h
 #import "UIView.h" #import "DialerLCDFieldDelegate.h" @class UIControl, UIView<DialerLCDFieldProtocol>, UIView<TPDialerKeypadProtocol>; @interface PHAbstractDialerView : UIView <DialerLCDFieldDelegate> { BOOL _inCallMode; UIView<DialerLCDFieldProtocol> *_lcdView; UIView<TPDialerKeypadProtocol> *_phonePadView; id <DialerViewDelegate> _delegate; UIControl *_addContactButton; UIControl *_callButton; UIControl *_deleteButton; } @property(retain, nonatomic) UIControl *deleteButton; // @synthesize deleteButton=_deleteButton; @property(retain, nonatomic) UIControl *callButton; // @synthesize callButton=_callButton; @property(retain, nonatomic) UIControl *addContactButton; // @synthesize addContactButton=_addContactButton; @property(nonatomic) id <DialerViewDelegate> delegate; // @synthesize delegate=_delegate; @property(retain, nonatomic) UIView<TPDialerKeypadProtocol> *phonePadView; // @synthesize phonePadView=_phonePadView; @property(retain, nonatomic) UIView<DialerLCDFieldProtocol> *lcdView; // @synthesize lcdView=_lcdView; @property(nonatomic) BOOL inCallMode; // @synthesize inCallMode=_inCallMode; - (void)dialerField:(id)arg1 stringWasPasted:(id)arg2; - (void)dialerLCDFieldTextDidChange:(id)arg1; - (void)dealloc; @end 


इसमें एक UIView *_lcdView, DialerLCDFieldProtocol .
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.
दृश्य UIView *_lcdView, DialerLCDFieldProtocol .
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.
UIView *_lcdView, DialerLCDFieldProtocol .
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.
UIView *_lcdView, DialerLCDFieldProtocol .
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.
 UIView *_lcdView,    DialerLCDFieldProtocol . 
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.
UIView *_lcdView, DialerLCDFieldProtocol .
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.
UIView *_lcdView, DialerLCDFieldProtocol .
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.
 UIView *_lcdView,    DialerLCDFieldProtocol . 
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.
UIView *_lcdView, DialerLCDFieldProtocol .
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.
 UIView *_lcdView,    DialerLCDFieldProtocol . 
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.
UIView *_lcdView, DialerLCDFieldProtocol .
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.
UIView *_lcdView, DialerLCDFieldProtocol .
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.
UIView *_lcdView, DialerLCDFieldProtocol .
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.
UIView *_lcdView, DialerLCDFieldProtocol .
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.
 UIView *_lcdView,    DialerLCDFieldProtocol . 
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.
UIView *_lcdView, DialerLCDFieldProtocol .
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.

UIView *_lcdView, DialerLCDFieldProtocol .
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.

UIView *_lcdView, DialerLCDFieldProtocol .
DialerLCDFieldProtocol-Protocol.h #import "NSObject.h" @protocol DialerLCDFieldProtocol <NSObject> - (void)setDelegate:(id)arg1; - (void)setHighlighted:(BOOL)arg1; - (BOOL)highlighted; - (void)setInCallMode:(BOOL)arg1; - (BOOL)inCallMode; - (void)deleteCharacter; - (void)setText:(id)arg1 needsFormat:(BOOL)arg2; - (id)text; @optional - (void)setText:(id)arg1 needsFormat:(BOOL)arg2 name:(id)arg3 label:(id)arg4; - (void)setName:(id)arg1 numberLabel:(id)arg2; @end

setText:needsFormat: text . !

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); NSLog(@"text: %@", currentText); objc_msgSend(lcdView, @selector(setText:needsFormat:), @"+375123456789", YES); } %end
'0' , :

<Warning>: text: (0 )


, . .

#import <substrate.h> %hook DialerController - (void)phonePad:(id)arg1 replaceLastDigitWithString:(id)arg2 { id dialerView = MSHookIvar<id>(self, "_dialerView"); id lcdView = MSHookIvar<id>(dialerView, "_lcdView"); NSString *currentText; currentText = objc_msgSend(lcdView, @selector(text)); currentText = [currentText stringByReplacingOccurrencesOfString:@"(" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@")" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@"-" withString:@""]; currentText = [currentText stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([arg2 isEqualToString:@"+"] && currentText.length && [currentText characterAtIndex:currentText.length - 1] == '0') { currentText = [currentText stringByReplacingCharactersInRange:NSMakeRange(currentText.length - 1, 1) withString:@"+"]; objc_msgSend(lcdView, @selector(setText:needsFormat:), currentText, YES); } else { %orig(arg1, arg2); } } %end
, , , ()- .


github .

, http://gennick.ru/cydia/ . Plus4Belarus.

iPhone 4 iPhone 5 c 7.0.4.

Source: https://habr.com/ru/post/In209990/


All Articles