gpt4 book ai didi

ios - 当用户在我的应用程序中按下联系号码时如何获取电话号码并在电话拨号盘中显示该号码

转载 作者:行者123 更新时间:2023-11-28 12:52:10 24 4
gpt4 key购买 nike

我有一些以下的 json 数据:

这将全部显示在 map View 中。因此,当用户按下 map 中的任何图钉时。将显示地址、姓名调用按钮。

我有一个 action method 用于那个 call button..所以如果任何用户按下我 map 上的任何图钉。它会显示 Address, name, one call button... 因此,如果用户按下那个调用按钮,它会显示我的 name 和 address 各自或正确的电话号码它应该显示在正常的电话拨号盘中。

我在 objective-c 中做了一些事情。但是我不擅长 swift 2.0。

任何人都可以帮助我如何做到这一点。

完整代码:

import UIKit
import MapKit
import CoreLocation

class mapVC: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate {

@IBOutlet weak var mapView: MKMapView!

@IBOutlet weak var AddressTitleLabel: UILabel!

@IBOutlet weak var AddressSubtitleLabel: UILabel!

@IBOutlet weak var LocationView: UIView!

@IBOutlet weak var ResultCounts: UILabel!

@IBOutlet weak var AddressImg: UIImageView!

let locationManager = CLLocationManager()


override func viewDidLoad() {
super.viewDidLoad()
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()

mapSearch()

LocationView.hidden = true
locationManager.delegate = self

locationManager.desiredAccuracy = kCLLocationAccuracyBest


mapView.delegate = self


}

func mapView(mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView) {

print("Inside selecting annotation")

LocationView.hidden = false

if let newTitle = view.annotation?.title, let newAddress = view.annotation?.subtitle, let AddressNewImage = view.detailCalloutAccessoryView {

AddressTitleLabel.text = newTitle

AddressSubtitleLabel.text = newAddress

//setting callout accessory as image to UIImage
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0);

AddressNewImage.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)

let NAimage:UIImage = UIGraphicsGetImageFromCurrentImageContext();

AddressImg.image = NAimage

}

}

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location : CLLocationCoordinate2D = manager.location!.coordinate;
let long = location.longitude;
let lat = location.latitude;
CLGeocoder().reverseGeocodeLocation(manager.location!, completionHandler: {(placemarks, error)->Void in
if (error != nil) {
print("Reverse geocoder failed with error" + error!.localizedDescription)
return
}
})

let loadlocation = CLLocationCoordinate2D(
latitude: lat, longitude: long

)

mapView.centerCoordinate = loadlocation;

let span = MKCoordinateSpanMake(0.2, 0.2)
let region = MKCoordinateRegion(center: loadlocation, span: span)


mapView.setRegion(region, animated: true)

let annotation = MKPointAnnotation()
annotation.coordinate = loadlocation
annotation.title = "Current Location"
annotation.subtitle = "You are Here."

mapView.addAnnotation(annotation)

locationManager.stopUpdatingLocation();
}

func mapSearch(){

//Map search for Level Income in the selected region area
let url:NSURL = NSURL(string: "url")!
let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data:NSData?, response: NSURLResponse?, error:NSError?) -> Void in

do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSArray



dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.ResultCounts.text = "\(json.count) Results"

// Loop through all items and display them on the map

var lon:Double!

var lat:Double!

var annotationView:MKPinAnnotationView!

var pointAnnoation:LocationClass!

//2
for item in json{

let obj = item as! Dictionary<String,AnyObject>

lon = obj["longitude"]!.doubleValue

lat = obj["latitude"]!.doubleValue

pointAnnoation = LocationClass()

pointAnnoation.coordinate = CLLocationCoordinate2D(latitude: lat, longitude: lon)

pointAnnoation.title = obj["name"] as? String

pointAnnoation.subtitle = obj["address"] as? String

pointAnnoation.pinCustomImageName = "other_location.png"

let ImageName = obj["image"] as? String

let imgURL: NSURL = NSURL(string: ImageName!)!

let request: NSURLRequest = NSURLRequest(URL: imgURL)

let session = NSURLSession.sharedSession()

let Imgtask = session.dataTaskWithRequest(request){
(data, response, error) -> Void in

if (error == nil && data != nil)
{
func display_image()
{
pointAnnoation.DisplayImage = UIImage(data: data!)
}

dispatch_async(dispatch_get_main_queue(), display_image)
}

}

Imgtask.resume()

annotationView = MKPinAnnotationView(annotation: pointAnnoation, reuseIdentifier: "pin")

self.mapView.addAnnotation(annotationView.annotation!)

}

})

}catch{
print("Some error occured")
}



}

// Call the resume() method to start the NSURLSession task
task.resume()
}

func mapView(mapView: MKMapView,
viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView?{

let reuseIdentifier = "pin"

var v = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseIdentifier)
if v == nil {
v = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseIdentifier)
v!.canShowCallout = false
}
else {
v!.annotation = annotation
}

let customPointAnnotation = annotation as! LocationClass

v!.image = UIImage(named:customPointAnnotation.pinCustomImageName)

v!.detailCalloutAccessoryView = UIImageView(image: customPointAnnotation.DisplayImage)

return v
}



@IBAction func CallButtontap(sender: AnyObject) {

let phoneUrl: NSURL = NSURL(string: "telprompt:\(item[index]["phone"])")!
if UIApplication.sharedApplication().canOpenURL(phoneUrl) {
UIApplication.sharedApplication().openURL(phoneUrl)
}
}


func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
print("Error while updating location " + error.localizedDescription)
}

我试过:

@IBAction func CallButtontap(sender: AnyObject) {

let phoneUrl: NSURL = NSURL(string: "telprompt:\(item[index]["phone"])")!
if UIApplication.sharedApplication().canOpenURL(phoneUrl) {
UIApplication.sharedApplication().openURL(phoneUrl)
}

没用

最终更新:

func mapView(mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView) {

print("Inside selecting annotation")

LocationView.hidden = false

if let newTitle = view.annotation?.title, let newAddress = view.annotation?.subtitle, let AddressNewImage = view.detailCalloutAccessoryView {

AddressTitleLabel.text = newTitle

AddressSubtitleLabel.text = newAddress

//setting callout accessory as image to UIImage
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0);

AddressNewImage.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)

let NAimage:UIImage = UIGraphicsGetImageFromCurrentImageContext();

AddressImg.image = NAimage
if (view.annotation is Annotation.self) {
var annot: Annotation = view.annotation
var index: Int = self.arrayOfAnnotations.indexOfObject(annot)
CallButtontap(index)
}

}


}

@IBAction func CallButtontap(sender: AnyObject) {

let phoneUrl: NSURL = NSURL(string: "telprompt:\(item[sender]["phone"])")!
if UIApplication.sharedApplication().canOpenURL(phoneUrl) {
UIApplication.sharedApplication().openURL(phoneUrl)
}

最佳答案

这是您的代码的快速版本:

@IBAction func didTapPhoneButton(sender: UIButton) {
// This function will make phone call
let phoneUrl: NSURL = NSURL(string: "telprompt:\(myJson[index]["phone"])")!
if UIApplication.sharedApplication().canOpenURL(phoneUrl) {
UIApplication.sharedApplication().openURL(phoneUrl)
} else {
PCUtilities.showAlertWithTitle("Alert", message: "Call facility is not available!!!", cancelButtonTitle: "OK")
}
}

Also mark this useful website: https://objectivec2swift.com/#/converter/code

关于ios - 当用户在我的应用程序中按下联系号码时如何获取电话号码并在电话拨号盘中显示该号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36148402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com