खोज…
स्विफ्ट के साथ 3 डी टच
IPhone 6s Plus के साथ 3D टच पेश किया गया है। इस नई इंटरफ़ेस परत के साथ दो व्यवहार जोड़े गए हैं: पीक और पॉप।
पीक और पॉप संक्षेप में
पीक - हार्ड दबाएं
पॉप - प्रेस वास्तव में कठिन है
3D समर्थन के लिए जाँच की जा रही है
आपको जांचना चाहिए कि डिवाइस में 3 डी टच सपोर्ट है या नहीं। आप एक UITraitCollection ऑब्जेक्ट के forceTouchCapability संपत्ति के मूल्य की जांच करके ऐसा कर सकते हैं। UITraitCollection आपके ऐप के लिए iOS इंटरफ़ेस वातावरण का वर्णन करता है।
if (traitCollection.forceTouchCapability == .Available) {
registerForPreviewingWithDelegate(self, sourceView: view)
}
प्रतिनिधि को लागू करना
आपको अपनी कक्षा में UIViewControllerPreviewingDelegate के दो तरीकों को लागू करने की आवश्यकता है। तरीकों में से एक झांकना के लिए है और अन्य एक पॉप व्यवहार के लिए है।
विधि झांकना के लिए लागू किया जाना previewingContext है।
func previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
guard let indexPath = self.tableView.indexPathForRowAtPoint(location), cell = self.tableView.cellForRowAtIndexPath(indexPath) as? <YourTableViewCell> else {
return nil
}
guard let datailVC = storyboard?.instantiateViewControllerWithIdentifier("<YourViewControllerIdentifier>") as? <YourViewController> else {
return nil
}
datailVC.peekActive = true
previewingContext.sourceRect = cell.frame
// Do the stuff
return datailVC
}
पॉप के लिए लागू की जाने वाली विधि प्रीव्यूइंग कॉन्टेक्स्ट है । :)
func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) {
let balanceViewController = viewControllerToCommit as! <YourViewController>
// Do the stuff
navigationController?.pushViewController(balanceViewController, animated: true)
}
जैसा कि आप देख सकते हैं कि वे अतिभारित तरीके हैं। आप इन तरीकों को लागू करने के लिए किसी भी तरह से 3 डी टच का उपयोग कर सकते हैं।
उद्देश्य सी
//Checking for 3-D Touch availability
if ([self.traitCollection respondsToSelector:@selector(forceTouchCapability)] &&
(self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable))
{
[self registerForPreviewingWithDelegate:self sourceView:self.view];
}
//Peek
- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext
viewControllerForLocation:(CGPoint)location {
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
Country *country = [self countryForIndexPath:indexPath];
if (country) {
CountryCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
if (cell) {
previewingContext.sourceRect = cell.frame;
UINavigationController *navController = [self.storyboard instantiateViewControllerWithIdentifier:@"UYLCountryNavController"];
[self configureNavigationController:navController withCountry:country];
return navController;
}
}
return nil;
}
//Pop
- (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit {
[self showDetailViewController:viewControllerToCommit sender:self];
}
3 डी टच ऑब्जेक्टिव-सी उदाहरण
उद्देश्य सी
//Checking for 3-D Touch availability
if ([self.traitCollection respondsToSelector:@selector(forceTouchCapability)] &&
(self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable))
{
[self registerForPreviewingWithDelegate:self sourceView:self.view];
}
//Peek
- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext
viewControllerForLocation:(CGPoint)location {
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
Country *country = [self countryForIndexPath:indexPath];
if (country) {
CountryCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
if (cell) {
previewingContext.sourceRect = cell.frame;
UINavigationController *navController = [self.storyboard instantiateViewControllerWithIdentifier:@"UYLCountryNavController"];
[self configureNavigationController:navController withCountry:country];
return navController;
}
}
return nil;
}
//Pop
- (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit {
[self showDetailViewController:viewControllerToCommit sender:self];
}