Эксперемент

Написал простенькую программку ради эксперимента. С помощью программы можно ходит по корневому разделу системы, без Jailbreak. Если кто-то имеет опыт как создать фаил в директории не принадлежащей программе,  без взлома устройства, и поделится! Буду очень признателен!

photo

И собственно сам код

Universal web services suite for iPhone/iPad and Android apps

Hi there! We are a group of iPhone / Android developers who have developed a suite of web services to assist us and other developers in building great apps.

After numerous projects we have become tired of having to set up the server scripts to do all the same things for different clients. Most of the server functionality

is typical: 1) storing location data for Google Maps; 2) storing users’ high scores / ranks; 3) sending Push Notifications; 4) storing files / XML; etc.

We couldn’t use the existent solutions because in some cases they didn’t provide the required functionality and in most cases they require your users to be exposed to some social network of theirs, while our clients just want a simple functionality without users knowing of any services behind that.

So we have launched what we call Mob1serv, a universal server solution for the typical needs of iPhone / Android apps. It consists of modules which deal with most common tasks:

* High Scores – a powerful online high scores table
* PushNote – a module allowing to send immediate or delayed Push Notifications (you can build instant messengers or alarm clocks, anything with this)
* GeoPos – stores locations of Google Map objects, their statuses and ‘last seen online’ time
* OAuth contracter – allows you to implement transparent authentication and integration with Facebook, Twitter, Google etc
* More modules to come!

Continue reading

Radio buttons for iPhone application

Presented simple and nice solution for radio buttons, based on the UIButton.

Add buttons on view of controller

1
2
3
4
5
6
7
8
9
for (int i = 0; i < 5; i++) {
          UIButton *but = [UIButton buttonWithType:UIButtonTypeCustom];
          [but setImage:[UIImage imageNamed:@"checkbox.png"] forState:UIControlStateNormal];
          [but setImage:[UIImage imageNamed:@"checkedbox.png"] forState:UIControlStateSelected];
          [but setFrame:CGRectMake(0, 0, 17, 17)];
          [but setCenter:CGPointMake( 50,  i*40+20 )];
          [but addTarget:self action:@selector(checkboxButton:) forControlEvents:UIControlEventTouchUpInside];
          [self.view addSubview:but];
     }

Continue reading

Disabling default zoom for UIWebView

Make and add custom object from UIView on top UIWebView

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@interface CUIView : UIView {
     UIWebView *web;
     int time;
}
@property (nonatomic, assign) UIWebView *web;
@end


@implementation CUIView

@synthesize web;

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {   

     BOOL forwardToSuper = YES;

     if (time == (int)event.timestamp) {
               // prevent this
               forwardToSuper = NO;
     }         

     time = event.timestamp;
     
     if (forwardToSuper){
          //return self.superview;
          return [web hitTest:point withEvent:event];
     }
     else {
          // Return the superview as the hit and prevent
          // UIWebView receiving double or more taps
          return [super hitTest:point withEvent:event];
     }
}
@end

touchBegan/touchEnd in custom UIWebView

The main disadvantage in the object UIWebView is lack of methods touchBegan and touchEnd. But this question has been settled by some manipulations with privates possibilities:) Thank you Satoshi Nakagawa :)

PSWebView.h – empty

1
2
3
4
5
#import

@interface PSWebView : UIWebView
@end
</uikit>

If you need add method touchBegan then make step by step
1. add after 6 line

1
- (void)webView:(UIWebView*)sender tappedBeganWithTouch:(UITouch*)touch event:(UIEvent*)event;

2. after 11

1
- (void)fireBeganTappedWithTouch:(UITouch*)touch event:(UIEvent*)event;

3. add after 31

1
2
3
4
5
6
7
8
9
10
11
- (void)__touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
     [self __touchesBegan:touches withEvent:event];
     
     id webView = [[self superview] superview];
     if (touches.count == 1) {
          if ([webView respondsToSelector:@selector(fireBeganTappedWithTouch:event:)]) {
               [webView fireBeganTappedWithTouch:[touches anyObject] event:event];
          }
     }
}

4. after 46

1
2
3
     Method targetMethod2 = class_getInstanceMethod(klass, @selector(touchesBegan:withEvent:));
     Method newMethod2 = class_getInstanceMethod(klass, @selector(__touchesBegan:withEvent:));
     method_exchangeImplementations(targetMethod2, newMethod2);

5. and last addition in source before last “@end”

1
2
3
4
5
6
- (void)fireBeganTappedWithTouch:(UITouch*)touch event:(UIEvent*)event
{
     if ([self.delegate respondsToSelector:@selector(webView:tappedBeganWithTouch:event:)]) {
          [(NSObject*)self.delegate webView:self tappedBeganWithTouch:touch event:event];
     }
}

For touchMoves similar steps. It’s easy!

Continue reading

Rewrite UITabBar and UITabBarItem iPhone

Вариант 1

Вкратце о чем нужно помнить!
Самое главное, если вы используете какие-то переменные из приват фреймверков и для них не прописаны property, обязательно пропишите! Иначе при компиляции на эти переменные будет ругаться компилятор к примеру так:

1
2
3
4
"_OBJC_IVAR_$_UITabBarItem._selectedImage", referenced from:
_OBJC_IVAR_$_UITabBarItem._selectedImage$non_lazy_ptr in UICategory.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

Рассказывать тут не очем кроме quartz, но о нем я расскажу в следующем посте подробнее, как появится время. Смотрите исходники, кода немного :), основные файлы ExtendsForTabBar.h и m. Исходники ниже.

Вариант 2

Можно взять за основу UITabBar и создать свой объект а не переписывать методы существующего. Хотя в конечном итоге и в этом случае мы переписываем методы.

Добавив два файла пустого NSObject к примеру с именем MyTabBar. В файле h вместо NSObject напишем UITabBar.
В m файе напишем:

1
2
3
4
5
- (void) drawRect:(CGRect)rect {
     self.frame = CGRectMake(0, 409, 320, 71);
     UIImage *img  = [UIImage imageNamed:@"tabbarbg2.png"];
     [img drawInRect:CGRectMake(0, 0, 320, 71)];
}

Далее в MainWindow.xib сделать все как на скриншотах, сохранить и скомпилировать.



Исходники

Чтоб найти еще что-то подобное достаточно набрать: “Custom Colors UITabBar UITabBarItem”, “How to custom UITabBar” и подобное.

How to include ttf fonts in iPhone app

Хороший способ подключения шрифтов.

Кидаем в ресурсы наш шрифт. Вставляем и выполняем функцию.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
NSUInteger loadFonts()
{
     NSUInteger newFontCount = 0;
     NSBundle *frameworkBundle = [NSBundle bundleWithIdentifier:@"com.apple.GraphicsServices"];
     const char *frameworkPath = [[frameworkBundle executablePath] UTF8String];
     if (frameworkPath) {
          void *graphicsServices = dlopen(frameworkPath, RTLD_NOLOAD | RTLD_LAZY);
          if (graphicsServices) {
               BOOL (*GSFontAddFromFile)(const char *) = dlsym(graphicsServices, "GSFontAddFromFile");
               if (GSFontAddFromFile)
                    for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"TTF" inDirectory:nil])
                         newFontCount += GSFontAddFromFile([fontFile UTF8String]);
          }
     }
     return newFontCount;
}

Смотрим что у нас появилось

1
NSLog(@"%@",[UIFont familyNames]);