Training „git“
07.10.2010 - 08.10.2010, Essen
Training „Eclipse RCP“
28.03.2011 - 01.04.2011, Dortmund

Zusammenspiel mit anderen Applikationen

URLs öffnen

NSURL* url = [NSURL URLWithString:@"http://www.iphonetraining.de/"];
[[UIApplication sharedApplication] openURL:url];

URL-Schemata

Browser einbetten mit UIWebView

UIWebView* browser = [[[UIWebView alloc] initWithFrame:self.view.bounds] autorelease];

// UIWebView.scalesPageToFit: Web-Page einpassen und Zoomen erlauben, wenn YES
browser.scalesPageToFit = YES;

// UIView.autoresizingMask: Browser mit dem Parent-View mitskalieren
browser.autoresizingMask = (UIViewAutoresizingFlexibleWidth
                          | UIViewAutoresizingFlexibleHeight);

[browser loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
[self.view addSubview: browser];

Interaktion mit UIWebView I

Interaktion mit UIWebView II (UIWebViewDelegate)

- (BOOL) webView:(UIWebView *)webView
        shouldStartLoadWithRequest:(NSURLRequest *)request
        navigationType:(UIWebViewNavigationType)navigationType {
    
    if ([@"myapp" isEqualToString:[[request URL] scheme]]) {
        NSString* query = [[request URL] resourceSpecifier];
        NSString* js = [NSString stringWithFormat:
            @"document.getElementById('link').innerHTML = '%@'", query];
        NSString* result = [webView stringByEvaluatingJavaScriptFromString:js];
        NSLog(@"result: %@", result);
        return NO;
    }
    return YES;
}

Eigene URL-Schemata I

Eigene URL-Schemata II

Adressbuch API

- (void) showAddressBook {
    UIViewController* picker = [[ABPeoplePickerNavigationController alloc] init];
    picker.peoplePickerDelegate = self;
    [self presentModalViewController:picker animated:YES];
    [picker release];
}

- (BOOL) peoplePickerNavigationController:
        (ABPeoplePickerNavigationController *)peoplePicker
        shouldContinueAfterSelectingPerson:(ABRecordRef)person {
    // Rückgabewerte von ...Copy... müssen mit CFRelease freigegeben werden
    NSString* friendlyName = (NSString*) ABRecordCopyCompositeName(person); 
    ABMultiValueRef emailrecord = ABRecordCopyValue(person, kABPersonEmailProperty);
    NSArray *emailaddresses = (NSArray*) ABMultiValueCopyArrayOfAllValues(emailrecord);
    [self dismissModalViewControllerAnimated:YES];
    return NO;
}

E-Mails versenden

Kamera / Bildauswahl I: UIImagePickerController

- (void) openPhotoPickerWithCamera {
    UIImagePickerController* imagePicker = [[UIImagePickerController alloc] init];
    if ([UIImagePickerController isSourceTypeAvailable:
            UIImagePickerControllerSourceTypeCamera]) {
        imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
    }
    else if ([UIImagePickerController isSourceTypeAvailable:
            UIImagePickerControllerSourceTypePhotoLibrary]) {
        imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    } 
    imagePicker.delegate = self;
    imagePicker.allowsEditing = YES;
    imagePicker.navigationBar.barStyle = UIBarStyleBlackTranslucent;
    [self.navigationController presentModalViewController:imagePicker animated:YES];
}

Kamera / Bildauswahl II: UIImagePickerControllerDelegate

- (void) imagePickerController:(UIImagePickerController *)picker 
         didFinishPickingImage:(UIImage *)image
                   editingInfo:(NSDictionary *)editingInfo {
    NSData* imageData = UIImageJPEGRepresentation(image, 0.8);
    [picker dismissModalViewControllerAnimated:YES];
}

- (void) imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    [picker dismissModalViewControllerAnimated:YES];
}

Kamera / Bildauswahl III: Skalieren und Speichern eines Bildes

CGSize destSize = CGSizeMake(100, 100);
UIGraphicsBeginImageContext(destSize);
[image drawInRect:CGRectMake(0, 0, destSize.width, destSize.height)];
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

NSData* jpegImageData = UIImageJPEGRepresentation(smallImage, 0.8);
Über Ihre Kommentare und Hinweise freue ich mich sehr:
Ralf Ebert | iPhone-Entwicklung | Zusammenspiel mit anderen Applikationen